Java集合之Collection接口重要部分總結

編程語言 Java 技術 奔跑的經理 奔跑的經理 2017-08-26
  1. Collection接口的子接口有兩個重要接口分支:List接口,Set接口,並且Collection接口繼承了Iterable接口

  2. List接口有三個重要的直接實現類:ArrayList,Vector,LinkedList

  3. Set接口有兩重要的直接實現類:HashSet,TreeSet

  4. 集合遍歷輸出主要有四中方法:Iterator接口法,forEach語句,Enumeration接口,ListIterator接口

Collection接口提供如下方法:

boolean add(E e) 向集合中添加元素
boolean addAll(Collection<? extends E> c) 向目標結合追加指定的集合
boolean equals(Object o) 清空集合
boolean contains(Object o) 判斷集合中是否包含指定元素
boolean containsAll(Collection<?> c 判斷集合中是否包含指定集合的所有元素
boolean equals(Object o) 判斷指定對象是否和集合相等
int hashCode() 返回對象的哈希碼
boolean isEmpty() 判斷集合是否為空
Iterator<E> iterator() 返回集合的迭代器,所謂迭代器,就是用於結合的遍歷輸出
default Stream<E> parallelStream() java8提供的方法,這裡小編也沒有研究
boolean remove(Object o) 從集合中刪除指定元素,刪除前會調用裡面對象的equals方法進行對象的比較所以自定義的類需要盡心equals方法的重寫
boolean removeAll(Collection<?> c) 移除集合中那些也包含在指定集合c中的所有元素
default boolean removeIf(Predicate<? super E> filter) Java8新增方法,不做探究
boolean retainAll(Collection<?> c) 保留兩個集合的共同元素,其他元素刪除
int size() 返回集合元素的個數
default Spliterator<E> spliterator() Java8新增方法,不做探究
default Stream<E> stream() Java8新增方法,不做探究
Object[] toArray() 返回集合所有元素組成的對象數組
<T> T[] toArray(T[] a) java5之後增加了泛型機制,這裡更加安全,明確指定對象數組裡面保存的對象類型

特別注意:List接口擴展了一個一些方法,其中最重要,也是用的最多的是:

E get(int index) 返回指定索引的元素

List接口特點:

List是有序的接口能,並且元素能夠重複,它夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似於數組下標)來訪問List中的元素,這類似於Java的數組。

List接口的實現類:

ArrayList:

ArrayList實現了可變大小的數組,它可以存放所有元素,包括null,每個ArrayList實例都有一個容量(Capacity),即用於存儲元素的數組的大小。這個容量可隨著不斷添加新元素而自動增加,當需要插入大量元素時,在插入前可以調用ensureCapacity方法來增加ArrayList的容量以提高插入效率,ArrayList也是非同步的(unsynchronized)。

LinkedList:

LinkedList,允許null元素,此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊列(queue)或雙向隊列(deque),LinkedList沒有同步方法。如果多個線程同時訪問一個List,則必須自己實現訪問同步。一種解決方法是在創建List時構造一個同步的List:

List list = Collections.synchronizedList(new LinkedList(...));

Vector

Vector非常類似ArrayList,但是Vector是同步的。由Vector創建的Iterator,雖然和ArrayList創建的Iterator是同一接口,但是,因為Vector是同步的,當一個Iterator被創建而且正在被使用,另一個線程改變了Vector的狀態(例如,添加或刪除了一些元素),這時調用Iterator的方法時將拋出ConcurrentModificationException,因此必須捕獲該異常。

Set接口特點:

Set是一種不包含重複的元素的接口,即任意的兩個元素e1和e2都有e1.equals(e2)=false,Set最多有一個null元素。很明顯,Set的構造函數有一個約束條件,傳入的Collection參數不能包含重複的元素。

Set接口實現類:

HashSet:

不能包含相同元素,元素無序,所以自定義的類必須重寫hashCode(),equals()方法。

TreeSet:

不能包含相同元素,元素有序,所以自定義的類必須重寫hashCode(),equals()方法,自定義類必須實現Comparable接口,實現類的自定義排序。


集合遍歷的四中方法:

Iterator接口法:這種方法90%使用率,通用

Java集合之Collection接口重要部分總結

Iterator接口法

forEach法:通用

Java集合之Collection接口重要部分總結

forEach法

Enumeration法:只適用於Vector類,但是此接口非常重要,對於架構的學習有很大幫助

Java集合之Collection接口重要部分總結

Enumeration法

ListIterator法:此接口是Iterator的子接口,而在list接口中存在這樣一個方法:

ListIterator<E> listIterator()

所以,這種迭代方法只能用在list接口的子類中,這種迭代可以雙向迭代,但是逆向迭代只能在正向迭代存在的時候才能使用。

Java集合之Collection接口重要部分總結

ListIterator法

運行結果:

Java集合之Collection接口重要部分總結

如果只有你向迭代結果如些:

Java集合之Collection接口重要部分總結

以上就是小編對Collection部分的總結!!大家有什麼意見可以提出來!!互相學習一下

相關推薦

推薦中...