Set:繼承自Collection接口,表示無序的,無重復元素的集合。Set中最常使用的是測試歸屬性,可以很容易測試某個對象是否在某個Set中。所以,查找就成為了Set中最重要的操作,因此通常會選擇一個HashSet的實現查找,因為有比較復雜的哈希表支持,它專門對快速查找進行了優化。
迭代器:迭代器是一種設計模式,在這裡是一個對象,它的作用就是遍歷並選擇列表和操作列表中的對象。迭代器的創佳的代價小,所以通常被稱為輕量級對象。迭代器統一了對各種容器的訪問方式,很方便。Java中的迭代器有兩種,一種是Iterator,另一種是繼承了Iterator只能用於各種List訪問的ListIterator. Iterator:只能用於單向移動,方法有:iterator()要求容器返回一個Iterator,Iterator將准備好返回序列的第一元素。next()獲得列表中的下一個元素。hasNext()檢查列表中是否還有元素。remove()將迭代器新近返回的元素刪除。
ListIterator:只能用於各種的List類的訪問,但能用於雙向的移動,有一個hASPrevious()檢查時候有前一個元素的,這種操作很像數據庫的游標。
import Java.util.ArrayList;
import Java.util.Arrays;
import Java.util.Collection;
import Java.util.Iterator;
import Java.util.LinkedList;
import Java.util.List;
import Java.util.ListIterator;
public class ListTest ...{
public static void main(String [] args)
...{
Collection<Integer> col = new ArrayList<Integer>(Arrays.asList(10,20,30));
List<Integer> list = new LinkedList<Integer>();
list.addAll(col);
list.add(40);
list.add(50);
list.add(60);
displayIterator(list);
list.remove(3);
displayListIterator(list);
}
public static void displayIterator(Collection<Integer> list)
...{
Iterator<Integer> it = list.iterator();
Integer i;
while(it.hasNext())
...{
i = it.next();
System.out.print(i + " ");
if(i==50)
...{
it.remove();
}
}
System.out.println();
}
public static void displayListIterator(List<Integer> list)
...{
ListIterator<Integer> li = list.listIterator();
/** *//**以下注釋代碼為死循環,永遠輸入表中的第一個數據*/
/** *//**while(li.hasNext())
{
System.out.println(li.next());
System.out.println(li.previous());
}*/
while(li.hasNext())
...{
System.out.print(li.next() + " ");
}
System.out.println();
while(li.hASPrevious())
...{
System.out.print(li.previous() + " ");
}
}
}