java容器有:ArrayList、LinkedList、Vector、HashSet、LinkedHashSet、TreeSet、LinkedHashMap、TreeMap、ConcurrentHashMap、Hashtable等等。
本教程操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。
什么是容器?
容器是指用以容納物料并以殼體為主的基本裝置。
java容器類類庫的用途是"保存對象"。摘自: “Thinking in Java”.
Java集合類是一種特別有用的工具類,可以用于存儲數(shù)量不等的對象,并可以實現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu),如棧,隊列等.Java集合就像一種容器,可以把多個對象(實際上是對象的引用,但習(xí)慣上都稱對象) “丟進” 該容器中. 摘自: “瘋狂Java講義”.
java中的容器也叫集合,是專門用來管理對象的對象. 這個是我說的.
Java 容器都有哪些?
-
Java 容器分為 Collection 和 Map 兩大類,其下又有很多子類,如下所示是Collection和Map的繼承體系:
具體如下結(jié)構(gòu):
- Collection
- List
- ArrayList
- LinkedList
- Vector
- Stack
- Set
- HashSet
- LinkedHashSet
- TreeSet
- List
- Map
- HashMap
- LinkedHashMap
- TreeMap
- ConcurrentHashMap
- Hashtable
- HashMap
ArrayList和LinkList的區(qū)別?
ArrayList(數(shù)組結(jié)構(gòu)):
-
優(yōu)點:get和set調(diào)用花費常數(shù)時間,也就是查詢的速度快
-
缺點:新項的插入和現(xiàn)有項的刪除代價昂貴,也就是添加刪除的速度慢
LinkedList(鏈表結(jié)構(gòu)):
-
優(yōu)點:新項的插入和和現(xiàn)有項的刪除開銷很小,即添加和刪除的速度快
-
缺點:對get和set的調(diào)用花費昂貴,不適合做查詢
List、Set、Map 之間的區(qū)別是什么?
List、Set、Map 的區(qū)別主要體現(xiàn)在兩個方面:元素是否有序、是否允許元素重復(fù)。
三者之間的區(qū)別,如下表:
HashMap 和 Hashtable 有什么區(qū)別?
-
存儲:HashMap 運行 key 和 value 為 null,而 Hashtable 不允許。
-
線程安全:Hashtable 是線程安全的,而 HashMap 是非線程安全的。
-
推薦使用:在 Hashtable 的類注釋可以看到,Hashtable 是保留類不建議使用,推薦在單線程環(huán)境下使用 HashMap 替代,如果需要多線程使用則用 ConcurrentHashMap 替代。
Comparable和Comparator區(qū)別?
Comparable接口
-
實現(xiàn)Comparable接口類表示這個類型的對象可以進行比較大小的。 這種可以比較大小的對象可以進行自然排序。
Comparator接口
-
比較器用于實現(xiàn)對象任意屬性進行比較大小。
-
在排序時候可以通過指定屬性比較器實現(xiàn)任意屬性排序。
在排序時候Comparable接口用于進行自然排序,而Comparator接口進行自定義排序,自定義排序更加靈活方便而常用。
設(shè)計上Comparable不推薦使用,因為對程序本身具有侵入性。
相關(guān)視頻教程推薦:Java視頻教程