天天看點

集合Collections,List

Collections:動态的存放多個對象。長度是可以改變的。兩個常用的子接口如下:

集合List:存放的元素有序且允許有重複的集合接口。

      List接口常用的實作類有ArrayList、Vector、LinkedList。

三者的差別:ArrayList :是使用數組結構實作的List集合,對于使用索引取出元素有較好的效率。但是插入删除的效率較慢。LinkedList是使用雙向連結清單實作的集合,它的通路效率低,但是插入删除效率高。Vector是舊版的ArrayList,它大多數操作跟ArrayList相同,差別之處在于Vector是線程同步(安全的)的。

Set:存放的元素不包含重複的集合接口,根據每個對象的哈希碼值用固定的算法算出它的存儲索引,把對象存放一個叫散清單的相應位置中,在取對象時根據對象的哈希碼值計算出它的存儲索引,在散清單的相應位置上的元素間進行少量的比較操作就能找到它。

重複内容是指依據hashCode()和equals()兩個方法區分的,它會先比較哈希值,然後再equals()比較。如果哈希值相等,equals傳回true,則表示這兩個對象是同一個對象。

參考文檔JDK API 1.6

Collection接口定義的方法,這些方法被Set和List繼承:

int size(); 傳回此collection中的元素數

boolean isEmpty(); 判斷此collection中是否包含元素。

boolean contains(Object obj); 判斷此collection是否包含指定的元素。用集合中的元素依次.equals(傳入contains方法的obj)

boolean containsAll(Collection c); 判斷此collection是否包含指定 collection中的所有元素

boolean add(Objectelement); 向此collection中添加元素

boolean addAll(Collection c);将指定collection中的所有元素添加到此collection中

boolean remove(Object element); 從此collection中移除指定的元素。

boolean removeAll(Collectionc); 移除此collection中那些也包含在指定 collection 中的所有元素。

void clear(); 移除collection中所有的元素。

booleanretainAll(Collection c); 僅保留此collection中那些也包含在參數指定collection的元素。即從清單中移除未包含在指定 collection 中的所有元素.在調用的對象中隻保留交集.如果操作成功,傳回true

Iteratoriterator(); 傳回在此collection的元素上進行疊代的疊代器。

Object[]toArray(); 把此collection轉成數組。

      通常使用Colleaction的實作類。比如List<String> list = newArrayList<String>();然後再向集合中添加元素,list.add(“a”);

      子接口List中新增的方法,都是針對List的索引操作的:

Object get(intindex) 傳回清單中指定位置的元素

Object add(intindex, Object element);指定的位置插入元素。

Objectset(int index, Object element) ;替換指定位置的元素

Objectremove(int index) 删除指定位置的元素

List subList(intfromIndex, int toIndex):傳回部分List視圖

int indexOf(Object o):元素第一次出現的下标

本文轉自 墨宇hz 51CTO部落格,原文連結:http://blog.51cto.com/zzhhz/1623554