一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 758|回复: 4
收起左侧

[算法题] LinkedList<AnyType> implements Iterable<AnyType> 求解释

[复制链接] |试试Instant~ |关注本帖
sanguine 发表于 2014-10-30 00:47:50 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
  1. public class LinkedList<AnyType> implements Iterable<AnyType>
  2. {
  3.    private Node<AnyType> head;
复制代码
在LinkedList中,为什么Node也要使用generic呢?我觉得这样写不就可以了么
  1. private class Node{
  2.         T data;
  3.         Node next;

  4.         public Node(T data){
  5.             this.data = data;
  6.             this.next = null;
  7.         }
  8.     }
复制代码
以及在下面:
  1. /*******************************************************
  2. *
  3. *  The Node class
  4. *
  5. ********************************************************/
  6.    private static class Node<AnyType>
  7.    {
  8.       private AnyType data;
  9.       private Node<AnyType> next;

  10.       public Node(AnyType data, Node<AnyType> next)
  11.       {
  12.          this.data = data;
  13.          this.next = next;
  14.       }
  15.    }

  16. /*******************************************************
  17. *
  18. *  The Iterator class
  19. *
  20. ********************************************************/

  21.    public Iterator<AnyType> iterator()
  22.    {
  23.       return new LinkedListIterator();
  24.    }

  25.    private class LinkedListIterator  implements Iterator<AnyType>
  26.    {
  27.       private Node<AnyType> nextNode;

  28.       public LinkedListIterator()
  29.       {
  30.          nextNode = head;
  31.       }

  32.       public boolean hasNext()
  33.       {
  34.          return nextNode != null;
  35.       }

  36.       public AnyType next()
  37.       {
  38.          if (!hasNext()) throw new NoSuchElementException();
  39.          AnyType res = nextNode.data;
  40.          nextNode = nextNode.next;
  41.          return res;
  42.       }

  43.       public void remove() { throw new UnsupportedOperationException(); }
  44.    }
复制代码
然后在这一段代码中,谁能帮忙解释下为什么迭代器要这样用吗?先申明一个内部类Iterator,但是为什么后面又新建一个LinkedListIterator来回调这个interator呢?


这个好像是叫做回调吧??这里一直没搞懂%>_<%


求解答~~~
头像被屏蔽
jy02677290 发表于 2014-10-30 01:38:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽
jy02677290 发表于 2014-10-30 01:41:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| sanguine 发表于 2014-10-30 03:11:51 | 显示全部楼层
jy02677290 发表于 2014-10-29 12:41
完整的用法应该是这样
http://tutorials.jenkov.com/java-generics/implementing-iterable.html
你要使用 ...

懂了……

然后最上面的问题,为什么Node也需要泛型呢?我觉得直接下面这种写法不就足够了吗?
  1. private class Node{
  2.         T data;
  3.         Node next;

  4.         public Node(T data){
  5.             this.data = data;
  6.             this.next = null;
  7.         }
  8.     }
复制代码
回复 支持 反对

使用道具 举报

头像被屏蔽
jy02677290 发表于 2014-10-30 04:07:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-11 06:34

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表