Java集合框架之容器間的區別

集合框架

概念:對象的容器爲集合,不能直接存放8種基本數據類型,jdk1.5以上提供了自動裝箱機制,集合可以直接將基本類型的值存放入容器中,但是容器會自動的將基本數據類型裝箱爲該基本數據類型對應的包裝類型的對象。

比較 List Set Map
繼承接口 Collection Collection
常見實現類 AbstractList(常見繼承子類有:ArrayList、LinkedList、Vector) AbstractSet(常見繼承子類有:HashSet、LinkedHashset、TreeSet) HashMap、TreeMap、HashTable
常見方法 add()、remove()、clear()、get()、contains()、size() add()、remove()、clear()、get()、contains()、size() put()、get()、 remove()、clear()、containsKey()、containsValue()、keySet()、values()、size()
元素 可重複 不可重複(用equals()判斷) key不可重複
順序 有序 無序(實際順序由hashCode決定)
線程安全 Vector線程安全 Hashtble線程安全

常用方法

java.util.Collection<E>
java.util.Collection.size()
java.util.Collection.isEmpty()
java.util.Collection.contains(Object)
java.util.Collection.iterator()
java.util.Collection.toArray()
java.util.Collection.toArray(T[])
java.util.Collection.add(E)
java.util.Collection.remove(Object)
java.util.Collection.containsAll(Collection<?>)
java.util.Collection.addAll(Collection<? extends E>)
java.util.Collection.removeAll(Collection<?>)
java.util.Collection.removeIf(Predicate<? super E>)
java.util.Collection.retainAll(Collection<?>)
java.util.Collection.clear()
java.util.Collection.equals(Object)
java.util.Collection.hashCode()
java.util.Collection.spliterator()
java.util.Collection.stream()
java.util.Collection.parallelStream()

一、List

1、ArrayList

ArrayList父類是AbstractList,底層數據結構是數組,因此增加刪除元素速度慢,查找元素速度快。

2、LinkedList

LinkedList的父類是AbstractSequentialList,底層數據結構是雙向鏈表,因此增加、刪除元素速度快,查找元素速度慢。

3、Vector

數據結構是數組,查詢快、增刪慢、線程安全、效率較低。

二、Set

1、HashSet

Hashset底層是由HashMap實現的。

Haset的值存放在HashMap的key上,HashMap的value都爲常量PRESENT

2、TreeSet

基於排列順序實現元素的不重複

實現了SortedSet接口,對於集合中的元素進行自動排序。

元素的對象類型可以通過implements(實現)Comparable接口,然後重寫ComparTo方法指定排序規則。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章