Java 迭代器的使用 Iterator
2024-10-10 09:49:37
Java的集合类可以使用for ... each循环
- List
- Set
- Queue
- Deque
我们以List为例 其实一个java编译器并不知道如何遍历一个List
编译器只是把一个for ... each 通过Iterator改写成普通的for循环
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (String str : list) {
System.out.println(str);
}
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
String str = iterator.next();
System.out.println(str);
}
如何让自己编写的集合类使用for..each循环
- 实现Iterable接口
- 返回Iterator对象
- 用Iterator对象迭代
我们自己编写一个集合类ReadOnlyList
public class IteratorTest {
public static void main(String[] args) {
ReadOnlyList<String> readOnlyList = new ReadOnlyList<>("a","b","c");
for (String str : readOnlyList){
System.out.println(str);
}
}
}
public class ReadOnlyList<E> implements Iterable<E> {
E[] array;
@SafeVarargs
public ReadOnlyList(E... array) {
this.array = array;
}
@Override
public Iterator<E> iterator() {
return new ReadOnlyIterator();
}
class ReadOnlyIterator implements Iterator<E> {
int index = 0;
@Override
public boolean hasNext() {
return index < ReadOnlyList.this.array.length;
}
@Override
public E next() {
E e = array[index];
index++;
return e;
}
}
}
运行结果
a
b
c
最新文章
- 在 Visual Studio 等编辑器/IDE中自动切换输入法,不需要手动的有没有?
- JavaScript中const、var和let区别浅析
- Codeforces Round #244 (Div. 2) A. Police Recruits
- task判断任务是否存在
- hdu 2594-Simpsons’ Hidden Talents(KMP)
- html5 做游戏 Quintus Sublime Text牛逼的神器
- WebUploader——一个页面多个实例上传图片
- 201521123048 《Java程序设计》第8周学习总结
- Bootstrap3 栅格系统-Less mixin 和变量
- php如何解决中文乱码问题?
- 《Swell数学》用户故事
- MySQL数据查询
- 外边距塌陷 margin collapsing
- Android--------内存泄露工具LeakCanary
- c++ 查找容器中不满足条件的元素,返回iterator(find_if_not)
- cocos2dx 在windows下开启console
- [LeetCode系列] 变序词查找问题(Anagrams)
- 好记性不如烂笔头-linux学习笔记5mysql主从复制
- Java Socket TCP编程
- 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示4
热门文章
- 一段小代码秒懂C++右值引用和RVO(返回值优化)的误区
- 想用selenium ,先了解html 基础知识(5)
- vue第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法)
- NET 5 收发邮件之 MailKit
- webform中ajax.ajaxMethod使用方法
- (一)NumPy基础:数组和矢量计算
- 前置机器学习(五):30分钟掌握常用Matplitlib用法
- java.io.IOException: Target host must not be null, or set in parameters. scheme=null, host=null, path=/
- mysql数据库连接java
- Kafka 消费组消费者分配策略