各位看官們,大家好,上一回中咱們說的是Java中類集之Set的例子,這一回咱們說的例子是Java中的類集之Iterator
。閒話休提,言歸正轉。讓我們一起Talk Android吧!
看官們,我們在前面的章回中介紹了類集中常用的接口及其實現類,這些接口及其實現類都是用來存放數據的,本章回中我們將介紹一個不用來存放數據的接口:Iterator
。
有看官提問,不用來存放數據,它還有什麼用呢?它主要用來輸出類集中的數據,因此稱它爲類集中的迭代器。
如果把List等接口比作是數據倉庫,那麼迭代器就是快遞小哥,快遞小哥把倉庫中的數據送到千家萬戶。接下來我們看看快遞小哥是如何把倉庫中的數據送到千家萬戶的。
Iterator提供了hasNext(),next(),remove()
方法。
- hasNext()用來判斷倉庫中是否有元素
- next()用來獲取當前的元素
- remove()用來刪除當前的元素
關於它們的使用,有一個標準的格式:
//collection表示類集中的某個子接口或者實現類的對象
Iterator<Integer> iterator = collection.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
這個格式在list,queue,set
.這些子接口以及它們的子類中都可以使用。
看官們,這就是從類集中輸出數據的標準操作。有看官說,這個看着很簡單呀,我也可以去幹快遞小哥的工作,其實這個真不簡單,類集封裝了很東西后給大家提供了簡潔的方法來輸出類集中的數據。因此看上去簡單,其實不簡單,不信你幹上一天快遞小哥試試。
看官們,隨着Java版本的升級,Java提供了foreach
循環,因此我們可以使用foreach
循環來輸出類集中的數據。有看官說,它與迭代器相比,哪個輸出操作好一些?從性能的角度看它們倆個平分秋色。因爲編譯器會把foreach
循環轉換爲帶有迭代器的循環。在實際的項目中,輸出類集中數據的時候,使用迭代器和foreach
循環都可以,至於使用哪種,沒有特殊的規定。不過老一些的代碼中使用迭代器的情況多一些。
看官們,我們在前面章回中輸出類集中的數據時大部分使用了toString
()方法,接下來我們通過代碼來演示如何使用迭代器和foreach
循環來輸出類集中的數據。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class iteratorEx {
public static void main(String args[]){
List<Integer> arrayList = new ArrayList<>();
List<Integer> linkedList = new LinkedList<>();
Set<Integer> hashSet = new HashSet<>();
Set<Integer> treeSet = new TreeSet<>();
//init all kinds of collection object
for(int i=0; i<10; ++i) {
arrayList.add(i);
linkedList.add(i+1);
hashSet.add(i+2);
treeSet.add(i+3);
}
//output the content of collection object by Iterator
Iterator<Integer> iter = arrayList.iterator();
System.out.print("arrayList: ");
while(iter.hasNext()) {
System.out.print(iter.next()+ " ");
}
System.out.println("");
iter = linkedList.iterator();
System.out.print("linkedList: ");
while(iter.hasNext()) {
System.out.print(iter.next()+ " ");
}
System.out.println("");
iter = hashSet.iterator();
System.out.print("hashSet: ");
while(iter.hasNext()) {
System.out.print(iter.next()+ " ");
}
System.out.println("");
iter = treeSet.iterator();
System.out.print("treeSet: ");
while(iter.hasNext()) {
System.out.print(iter.next()+ " ");
}
System.out.println("");
//output the content of collection object by foreach
System.out.println("-----------------------------------");
System.out.print("arrayList: ");
for(Integer i: arrayList) {
System.out.print(i+" ");
}
System.out.println(" ");
System.out.print("linkedList: ");
for(Integer i: linkedList) {
System.out.print(i+" ");
}
System.out.println(" ");
System.out.print("hashSet: ");
for(Integer i: hashSet) {
System.out.print(i+" ");
}
System.out.println(" ");
System.out.print("treeSet: ");
for(Integer i: treeSet) {
System.out.print(i+" ");
}
System.out.println(" ");
}
}
下面是程序的運行結果,請參考:
arrayList: 0 1 2 3 4 5 6 7 8 9
linkedList: 1 2 3 4 5 6 7 8 9 10
hashSet: 2 3 4 5 6 7 8 9 10 11
treeSet: 3 4 5 6 7 8 9 10 11 12
-----------------------------------
arrayList: 0 1 2 3 4 5 6 7 8 9
linkedList: 1 2 3 4 5 6 7 8 9 10
hashSet: 2 3 4 5 6 7 8 9 10 11
treeSet: 3 4 5 6 7 8 9 10 11 12
各位看官,關於Java中類集之Iterator的例子咱們就介紹到這裏,欲知後面還有什麼例子,且聽下回分解!