常用集合类的使用
集合類在日常的工作中經(jīng)常被使用,選擇一個(gè)合適的集合類,對程序的性能,健壯性都會有不小的提升,下面我們就常用的集合類給大家一一介紹
簡單畫個(gè)圖,說下組織架構(gòu)
List:
List接口及其實(shí)現(xiàn)類是容量可變的列表,可按索引訪問集合中的元素。?
特點(diǎn):集合中的元素有序、可重復(fù);
?列表在數(shù)據(jù)結(jié)構(gòu)中分別表現(xiàn)為:數(shù)組和向量、鏈表、堆棧、隊(duì)列。
(1)ArrayList 數(shù)組結(jié)構(gòu),插入移除數(shù)據(jù)慢,查詢數(shù)據(jù)快,按索引查找,不是線程安全的。
(2)LinkedList 鏈表結(jié)構(gòu),插入移除數(shù)據(jù)塊,只需要替換首尾節(jié)點(diǎn)地址就行,查詢數(shù)據(jù)慢,需要按列表節(jié)點(diǎn)順序依次查找。不是線程安全。
(2)Vector 實(shí)現(xiàn)可自動增長的數(shù)組結(jié)構(gòu),有序,可重復(fù),線程安全。
ArrayList 和?Vector 的區(qū)別:
(1):Vector是線程安全的,源碼中有很多的synchronized可以看出,而ArrayList不是。導(dǎo)致Vector效率無法和ArrayList相比;?
(2):ArrayList和Vector都采用線性連續(xù)存儲空間,當(dāng)存儲空間不足的時(shí)候,ArrayList默認(rèn)增加為原來的50%,Vector默認(rèn)增加為原來的一倍;?
(3):Vector可以設(shè)置capacityIncrement,而ArrayList不可以,從字面理解就是capacity容量,Increment增加,容量增長的參數(shù)。
Set:
Set的特點(diǎn):無序,不重復(fù)。
(1)HashSet 能夠快速定位一個(gè)元素。存入HashSet中的對象必須實(shí)現(xiàn)HashCode方法
如果想要排序,可以使用TreeSet
Map:
Map是一種把鍵對象和值對象進(jìn)行關(guān)聯(lián)的一種容器。
特點(diǎn):key不允許重復(fù)。
(1)HashMap 實(shí)現(xiàn)一個(gè)鍵到值映射的哈希表,通過鍵取得對象,沒有順序,通過get(key)來獲取value,允許存儲空對象,而且允許鍵是空(由于鍵必須是唯一,當(dāng)然只能有一個(gè))。
(2)HashTable 實(shí)現(xiàn)一個(gè)映像,所有的鍵必須非空,線程安全。如果處理的數(shù)據(jù)比較大,可以考慮concurrentHashMap,采用分片加鎖,提高程序運(yùn)行效率。
(3)TreeMap 實(shí)現(xiàn)排序。
(4)ConcurrentHashMap 線程安全,比hashtable效率高,內(nèi)部實(shí)現(xiàn)是分片鎖定。
---------------------?
作者:yinghuananhai?
來源:CSDN?
原文:https://blog.csdn.net/YingHuaNanHai/article/details/80751337?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
- 上一篇: Java 8中stream相关用法
- 下一篇: 熟悉Java String的使用,熟悉S