1. 程式人生 > 其它 >Python flask-restful框架講解

Python flask-restful框架講解

Iterator


  • Iterator物件成為迭代器(設計模式的一種),主要用於遍歷Collection集合中的元素。

  • GOF給迭代器的定義為,提供一種方法訪問一個容器(container)物件中各個元素,而又不暴露該物件的內部細節。迭代器模式,就是為了容器而生。

  • Iterator僅用於遍歷集合,Iterator本身並不提供承載物件的能力。如果需要建立Iterator物件,則必須有一個被迭代的集合

  • 集合物件每次呼叫iterator()方法都得到一個全新的迭代器物件,預設遊標都在集合的第一個元素之前。


package com.cheng.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Itertor {
public static void main(String[] args) {
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("牛不牛"));
coll.add(false);
coll.add(new Person("Ali",24));

//迭代器遍歷集合
Iterator iterator = coll.iterator();
while (iterator.hasNext()){//hasNext判斷是否有下一元素
System.out.println(iterator.next());//遍歷
}
/*
迭代器的兩種錯誤用法
while(coll.iterator.hasnext){
System.out.println(iterator.next());
} 這個會陷入死迴圈,因為每次呼叫iterator時候都會生成一個新的迭代器物件,而新的迭代器物件指標都是定位第一個元素之前
如 1 2 3 4 會一直輸出1


while(iteritor.next != null){
System.out.println(iterator.next());
}這個會跳著輸出 比如 1 2 3 4
判斷1不空 然後輸出2
判斷3不空 然後輸出4
*/
//remove 移除 不能沒用next就移除(這是指標在第一個元素之前) 或者移除兩次
Iterator iterator1 = coll.iterator();
while (iterator1.hasNext()){
Object obj = iterator1.next();
if ("牛不牛".equals(obj)) {
iterator1.remove();//remove移除牛不牛元素
}
}
Iterator iterator2 = coll.iterator();
while (iterator2.hasNext()){
System.out.println(iterator2.next());
}

}
}