·list和Set是存儲單列數據的集合,而Map是存儲鍵值對。
·list存儲的數據是有序的,且能夠重複。set存儲數據是無序的,不可重複。Map存儲的鍵不可重複,但值能夠重複。java
a.實現類數組
ArrayList、LinkedList、voctor安全
b.區別
ArrayList 底層爲數組,查詢時根據數組下標去找到對應的數據,但增刪時,效率低。
LinkedList 底層是鏈表,查詢時要經過一個個節點去查找,增刪時,效率高,只要斷開對應的節點,插入或刪除就行
Voctor 底層是數組,線程安全,增刪慢,查詢慢。app
ArrayList 內部是以數組形式來保存集合中的元素,所以隨機訪問時性能較好。性能
LinkedList 內部是以鏈表形式來保存集合中的元素,所以隨機訪問時性能較差,可是插入、刪除元素是性能比較出色(只須要改變指針的指向)spa
HashMap、LinkedHashMap、HashTable線程
b.區別
HashMap 非線程安全,但效率高,容許null
key的值是惟一的,容許value爲null。 利用這種特性,能夠很容易作到去重的效果指針
代碼有些地方不用理會什麼意思,只要知道大致上能用這個特性來方便查到到重複的數據。blog
int index = 0; for (int i = 0; i < rows.length; i++) { String[] arr = StringUtils.splitByWholeSeparatorPreserveAllTokens( //這裏不用理會是什麼意思 rows[i], "\t"); bagNoMap.put(arr[0], null); //這裏的arr[0]是bagNo index++; if (bagNoMap.size() != index) { returnBuffer.append("<br/> No.").append(i + 1) .append(" row,save fail!<br/> Reason of failure:") .append("Uploaded bag number is duplicated!"); error.setMsg(error.getMsg() + returnBuffer.toString()); index--; // 判斷下一次重複 continue; } }
HashTable 線程安全,效率低,不容許Null
linkedHashMap爲HashMap的子類,保存着插入的順序接口
HashSet、LinkedHashSet
b.區別
HashSet 底層是hashMap,不容許重複值
LinkedHsahSet 接口LinkedHashMap,底層是LinkedHashMap
一、詳細的這裏就很少說了
二、轉發請註明源地址