java中的Iterator接口和Iterable接口
一、Iterator接口
Iterator
接口是用来迭代java中的对象。它在java.util
包下面。
Iterator
接口里面必须实现的两个方法是:
复制代码
1
2
3
4boolean hasNext(); E next();
例如:
Iterator
实现类:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28package com.iterator; import java.util.Iterator; public class IteratorTest implements Iterator<Object> { Object[] obj; int i;//计数 // 构造方法用来接收Object类型或者其子类的数组 IteratorTest(Object[] obj) { this.obj = obj; } //重写hasNext()方法 @Override public boolean hasNext() { return i < obj.length;//返回一个Boolean值,判断时候还有元素 } //重写next()方法 @Override public Object next() { return obj[i++];//将数组一个个返回回去 } }
测试类:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15package com.iterator; import java.util.Iterator; public class Test { public static void main(String[] args) { Integer[] arr = {1,2,3,4,5,6}; Iterator it = new IteratorTest(arr); while(it.hasNext()){ System.out.print(it.next()+" "); } } }
也可以用for
循环来迭代:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13package com.iterator; import java.util.Iterator; public class Test { public static void main(String[] args) { Integer[] arr = {1,2,3,4,5,6}; for( Iterator i = new IteratorTest(arr) ; i.hasNext();){ System.out.println(i.next()); } } }
二、Iterable接口
Iterable
接口是返回一个在一组 T 类型的元素上进行迭代的迭代器它在java.lang
包底下,它支持foreach循环。
源码:
复制代码
1
2Iterator<T> iterator();
就是要返回一个实现Iterator
接口的迭代器。
例如:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28package com.iterator; import java.util.Iterator; public class IterableTest implements Iterable<Object>{ // private IteratorTest iteratorTest; Object[] object; IterableTest (Object[] object){ this.object = object; } int i ; @Override public Iterator iterator() { //匿名内部类 return new Iterator(){ public boolean hasNext(){ return i<object.length; } public Object next(){ return object[i++]; } }; } }
测试类:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12package com.iterator; public class Test { public static void main(String[] args) { Integer[] arr = {1,2,3,4,5,6}; IterableTest it = new IterableTest(arr); for(Object i :it){ System.out.println(i); } } }
注意:集合中Collection继承了Iterable接口,Iterable接口中的Iterator()方法返回了一个iterator对象,Iterable接口表示实现了该接口的类有iterator迭代的能力
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32package com.iterator; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); //此处Object是多态的写法 for(Object i : list){ System.out.println(i); } //可以利用泛型确定类型 /* List<String> list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); //这里就可以直接用String了 for(String i : list){ System.out.println(i); }*/ } }
最后
以上就是还单身八宝粥最近收集整理的关于java中的Iterator接口和Iterable接口java中的Iterator接口和Iterable接口的全部内容,更多相关java中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复