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