集合框架
概念:對象的容器爲集合,不能直接存放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方法指定排序規則。