黑马----JAVA迭代器详解
JAVA迭代器详解
1、Interable、Iterator和ListIterator
1)迭代器生成接口Interable,用于生成一个具体迭代器
public interface Iterable<T>{
Interator<T> iterator();
}
2)迭代器接口Iterator,用于遍历集合和移除元素,只能向前移动
public interface Iterator<T>{
boolean hasNext(); //判断下一个元素是否存在
T next(); //返回下一个元素
void remove(); //移除元素
}
3)表迭代器ListIterator
(1)继承了Iterator
(2)可以双向移动
(3)只能用于各种List类的访问
(4)可获取当前元素的前后元素的索引
2、Collection的子类(接口)除了List外,都实现了Interable接口,但List的抽象子类AbstractList实现了Interable接口。
3、Collection的子类(接口)都没有实现Iterator接口。但是,Collection的子类重写Interable接口的iterator()方法时,使用匿名内部类的方式实现Iterator接口。例如:
public Interator<T> interator(){
return new Iterator<T>(){
private int index = 0;
public boolean hasNext(){ return indext < size;} //size为集合元素的个数
public T next(){ return array[index++];} // array是存放元素的数组
public void remove(){} //不使用,就不需要实现
}
}
4、JAVA使用迭代器表示容器间的共性,而不是使用Collection。
5、Map及其子类没有实现Interable、Iterator
但是,Map内部生成Collection,从而间接实现Iterable接口和生成Iterator,所以,Map也可以使用迭代器。
6、foreach与迭代器
(1)foreach可用于数组和Collecton的所有对象
(2)foreach可用来遍历集合的原因是:foreach用Iterable在序列中移动。因此,任何实现了Iterable类都可用foreach遍历。
(3)foreach的java形式:for( :)
黑马----JAVA迭代器详解的更多相关文章
- java集合详解
1.java集合框架的层次结构 Collection接口: Set接口: HashSet具体类 LinkedHashSet具体类 TreeSet具体类 List接口: ArrayList具体类 L ...
- Java集合详解3:Iterator,fail-fast机制与比较器
Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码. 具体代码在我的GitHub中可以找到 https:/ ...
- Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解2:一文读懂Queue和LinkedList
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整 ...
- Java 集合详解 | 一篇文章解决Java 三大集合
更好阅读体验:Java 集合详解 | 一篇文章搞定Java 三大集合 好看的皮囊像是一个个容器,有趣的灵魂像是容器里的数据.接下来讲解Java集合数据容器. 文章篇幅有点长,还请耐心阅读.如只是为了解 ...
- Java内部类详解
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
随机推荐
- js面向对象的使用方法
标准用法: function Sprite(){ //函数内容部设置属性 this.name='shimily'; } //原型上设置方法 Sprite.prototype.show=function ...
- C#关于winforms窗体大小、边框、移动、动画等属性
1.窗体的边框设置为无: 2.把窗体高度调整为25,发现跑的时候总在40左右,这时需要改改属性, 把MinimumSize(0, 0)改成不为0的,最好改成和自己想要一样的大小, 最大高宽也应该这么调 ...
- WCF初探-27:WCF中的实例化
理解WCF中的实例化机制 “实例化”是指对用户定义的服务对象以及与其相关的 InstanceContext 对象的生存期的控制.也就是说我们的客户端程序在调用服务端方法时,需要实例化一个服务端代理类对 ...
- Linux x64 下 Matlab R2013a 300 kb 脚本文件调试的 CPU 占用过高问题的解决办法
(1) 系统+软件版本 CentOS 6.5 (Final), 64 位,内核initramfs-2.6.32-431.5.1.el6.x86_64, MATLAB Version: 8.1.0.60 ...
- 将 Tor socks 转换成 http 代理
你可以通过不同的 Tor 工具来使用 Tor 服务,如 Tor 浏览器.Foxyproxy 和其它东西,像 wget 和 aria2 这样的下载管理器不能直接使用 Tor socks 开始匿名下载,因 ...
- C++中的数组
数组名作为参数时,传递的是数组的首地址, 主调函数中实参数组元素个数不应该少于形参数组的元素个数 把数组名作为参数时,一般不指定数组第一维的大小 即使指定,编译时也会被忽略的.
- kibana 搜索提示挡住输入框
临时解决办法 $(".typeahead-items").css("margin-top","33px")
- ssh 注解写法
弄了半天 (好久哦) 首先 applicationContext-db.xml <?xml version="1.0" encoding="UTF-8" ...
- jquery 层根据矩形路径移动和闪耀(原创)
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>De ...
- Http的Get/Post请求区别
1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...