持有对象之间的相互关系。

简单的容器分类:


其中,ListIterator是Iterator的子类,仅供List使用(这里漏画了一条从List导向ListIterator的线),通过List.ListIterator()方法可以生成一个ListIterator的对象。同样,因为List继承Collection,同样可以通过iterator()方法生成一个Iterator的对象(同理,Set,Queue都可以这样)。值得注意的一点是:Set,Queue接口中并没有ListIterator的方法,因此它们并不可以生成ListIterator的对象(顾名思义,ListIterator仅供List使用)。

Map接口可以通过keySet()方法生成一个一个Map所有键组成的Set列。

LinkedList同时实现了List,Set,Queue这三个接口,它里面包含了很多方法,通常用于栈(先进后出),队列(先进先出),和双头队列的使用,同时,相比较于ArrayList对于List的使用上,在插入和移除的时候,LinkedList更为出色,在随机访问时则稍微逊色。

ListIterator相比较于Iterator则多了很多功能,Iterator只能单向移动,且只有“读”的功能,里面只包含了三种方法(hasNext(),next(),remove()),而ListIterator则多了双向移动(next(),previous()实现),实现了“读写”两个功能(set(),add()方法则实现了“写”的功能),并且还可以通过listIterator(n)指向一个一开始就指向索引为n处的ListIterator。(Set,Queue没有ListIterator,只有Iterator,是如何实现ListIterator的功能的呢?通过LinkList?还是说没有这方面的需求?如果通过LinkList就可以实现ListIterator的功能,那为什么还要有ListIterator呢?)

Collection继承了Iterable,而Iterable里面有一个方法Iterator<E> iterator();因此所有Collection都能够产生一个迭代器,而迭代器是都能够被用于foreach语句中的,所以在thinking in java 则通过返回一个匿名内部类(Iterable),并改写iterator()方法,使该方法返回的迭代器(Iterator)的迭代方式是反向迭代的方法来实现反向迭代器的功能的(代码在我的博客:《反向迭代器》中)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值