uwsgi+django部署的webserver應用日誌缺失問題
1. Iterator介面
java.util.Iterator介面作用:遍歷集合中的所有元素。
Iterator和Collection、Map介面有所不同:
Iterator主要用於迭代訪問(即遍歷)Collection中的元素,因此Iterator物件也被成為迭代器。
Collection、Map介面主要用於儲存元素。
獲取迭代器的方法:
public Iterator iterator() // 獲取集合對應的迭代器,用來遍歷集合中的元素
迭代的概念:
迭代:即Collection集合元素的通用獲取方式。在取元素之前先要判斷集合中有沒有元素,如果有,就把這個元素取出來,繼續再判斷,如果還有就再取出來。一直把集合中的所有元素全部取出。這種取出方式專業術語稱為迭代。
Iterator介面的常用方法如下:
1 public E next() // 返回迭代的下一個元素 2 public boolean hasNext() // 如果仍有元素可以迭代,則返回true
程式碼例項
1 public class Demo06 { 2 public static void main(String[] args){ 3 Collection coll = new ArrayList(); 4 5 coll.add("小明"); 6 coll.add("小紅");7 coll.add("小剛"); 8 System.out.println(coll); 9 10 Iterator it = coll.iterator(); 11 if(it.hasNext()){ 12 for(int i=0; i<coll.size(); i++){ 13 System.out.print(it.next() + " "); 14 } 15 } 16 } 17 }
/*
tips::在進行集合元素取出時,如果集合中已經沒有元素了,還繼續使用迭代器的next方法,將會發生java.util.NoSuchElementException沒有集合元素的錯誤。
*/
執行結果
[小明, 小紅, 小剛]
小明 小紅 小剛
2. 迭代器的實現原理
我們在之前案例已經完成了Iterator遍歷集合的整個過程。當遍歷集合時,首先通過呼叫集合的iterator()方法獲得迭代器物件,然後使用hashNext()方法判斷集合中是否存在下一個元素,如果存在,則呼叫next()方法將元素取出,否則說明已到達了集合末尾,停止遍歷元素。
Iterator迭代器物件在遍歷集合時,內部採用指標的方式來跟蹤集合中的元素,為了讓初學者能更好地理解迭代器的工作原理,接下來通過一個圖例來演示Iterator物件迭代元素的過程:
在呼叫Iterator的next方法之前,迭代器的索引位於第一個元素之前,指向第一個元素,當第一次呼叫迭代器的next方法時,返回第一個元素,然後迭代器的索引會向後移動一位,指向第二個元素,當再次呼叫next方法時,返回第二個元素,然後迭代器的索引會再向後移動一位,指向第三個元素,依此類推,直到hasNext方法返回false,表示到達了集合的末尾,終止對元素的遍歷。
3.使用Iterator迭代器刪除元素
java.util.Iterator迭代器中有一個方法:
void remove();
注意:Collection的remove方法,無法根據條件刪除。
【例】刪除一下集合元素中的偶數