我是靠谱客的博主 还单身八宝粥,这篇文章主要介绍java中的Iterator接口和Iterable接口java中的Iterator接口和Iterable接口,现在分享给大家,希望可以做个参考。

java中的Iterator接口和Iterable接口

一、Iterator接口

Iterator接口是用来迭代java中的对象。它在java.util包下面。
Iterator接口里面必须实现的两个方法是:

复制代码
1
2
3
4
boolean 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
28
package 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
15
package 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
13
package 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
2
Iterator<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
28
package 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
12
package 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
32
package 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中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部