Java AbstractCollection中的iterator()方法及示例
Java中的Collection是一個(gè)非常重要的接口,它代表著一組對(duì)象的集合,提供了許多常用的操作方法,比如增加、刪除、查找元素,獲取集合的大小等。愛(ài)掏網(wǎng) - it200.comAbstractCollection是Collection接口的實(shí)現(xiàn)類,它提供了一些基本的實(shí)現(xiàn)供子類繼承。愛(ài)掏網(wǎng) - it200.com
AbstractCollection中的iterator()方法是其中一個(gè)非常重要的方法,它返回一個(gè)Iterator對(duì)象,用于遍歷當(dāng)前集合中的元素。愛(ài)掏網(wǎng) - it200.com下面我們就來(lái)詳細(xì)地介紹這個(gè)方法及其示例。愛(ài)掏網(wǎng) - it200.com
我們先來(lái)看一下AbstractCollection中iterator()方法的定義:
public abstract Iterator<E> iterator();
可以看到,它沒(méi)有任何參數(shù),返回類型是Iterator
示例代碼
接下來(lái),我們將用一些示例代碼來(lái)演示iterator()方法是如何工作的。愛(ài)掏網(wǎng) - it200.com
我們首先需要?jiǎng)?chuàng)建一個(gè)AbstractCollection的子類,實(shí)現(xiàn)iterator()方法。愛(ài)掏網(wǎng) - it200.com這里我們自定義一個(gè)名為MyCollection的集合類:
import java.util.AbstractCollection;
import java.util.Iterator;
class MyCollection extends AbstractCollection<String> {
private String[] array;
private int size;
public MyCollection(String[] array) {
this.array = array;
this.size = array.length;
}
@Override
public int size() {
return size;
}
@Override
public Iterator<String> iterator() {
return new MyIterator(array);
}
private static class MyIterator implements Iterator<String> {
private String[] array;
private int cursor;
public MyIterator(String[] array) {
this.array = array;
this.cursor = 0;
}
@Override
public boolean hasNext() {
return cursor < array.length;
}
@Override
public String next() {
return array[cursor++];
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
}
這個(gè)集合類中包含了一個(gè)String類型的數(shù)組,使用size()方法返回?cái)?shù)組的大小。愛(ài)掏網(wǎng) - it200.comiterator()方法返回一個(gè)MyIterator對(duì)象,這個(gè)對(duì)象實(shí)現(xiàn)了Iterator接口,用于遍歷存儲(chǔ)在數(shù)組中的元素。愛(ài)掏網(wǎng) - it200.com
下面是我們使用MyCollection類的示例代碼:
public class Main {
public static void main(String[] args) {
String[] array = {"a", "b", "c"};
MyCollection coll = new MyCollection(array);
Iterator<String> it = coll.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
}
}
在這個(gè)示例中,我們創(chuàng)建了一個(gè)包含三個(gè)元素的字符串?dāng)?shù)組,使用MyCollection類將這個(gè)數(shù)組包裝成集合。愛(ài)掏網(wǎng) - it200.com然后我們通過(guò)iterator()方法獲取到一個(gè)Iterator對(duì)象,使用while循環(huán)遍歷這個(gè)集合中的所有元素。愛(ài)掏網(wǎng) - it200.com
運(yùn)行結(jié)果
最后,我們來(lái)看一下這個(gè)示例的運(yùn)行結(jié)果:
a
b
c
上面的代碼演示了如何使用AbstractCollection中的iterator()方法實(shí)現(xiàn)遍歷Collection集合,我們可以發(fā)現(xiàn),只要實(shí)現(xiàn)iterator()方法并返回正確的Iterator對(duì)象,就可以對(duì)Collection集合進(jìn)行遍歷操作。愛(ài)掏網(wǎng) - it200.com
結(jié)論
在Java中,AbstractCollection是Collection接口的一個(gè)基本實(shí)現(xiàn)類,它提供了一些基本的實(shí)現(xiàn)供子類繼承。愛(ài)掏網(wǎng) - it200.com其中的iterator()方法是用于遍歷集合中的所有元素,返回一個(gè)Iterator對(duì)象。愛(ài)掏網(wǎng) - it200.com我們可以根據(jù)不同的需求來(lái)實(shí)現(xiàn)這個(gè)方法,并使用它來(lái)遍歷集合中的所有元素。愛(ài)掏網(wǎng) - it200.com