經常使用集合

集合

1、List/Set/Map 區別

·list和Set是存儲單列數據的集合,而Map是存儲鍵值對。
·list存儲的數據是有序的,且能夠重複。set存儲數據是無序的,不可重複。Map存儲的鍵不可重複,但值能夠重複。
java

2、集合

一、List

   a.實現類數組

    ArrayList、LinkedList、voctor安全

  b.區別
    ArrayList   底層爲數組,查詢時根據數組下標去找到對應的數據,但增刪時,效率低。
    LinkedList  底層是鏈表,查詢時要經過一個個節點去查找,增刪時,效率高,只要斷開對應的節點,插入或刪除就行
    Voctor    底層是數組,線程安全,增刪慢,查詢慢。
app

    c.補充

    ArrayList 內部是以數組形式來保存集合中的元素,所以隨機訪問時性能較好。性能

      LinkedList 內部是以鏈表形式來保存集合中的元素,所以隨機訪問時性能較差,可是插入、刪除元素是性能比較出色(只須要改變指針的指向)spa

二、Map

  a.實現類

    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的子類,保存着插入的順序接口

三、Set

  a.實現類

    HashSet、LinkedHashSet

  b.區別

    HashSet 底層是hashMap,不容許重複值
    LinkedHsahSet 接口LinkedHashMap,底層是LinkedHashMap

 

3、後記

  一、詳細的這裏就很少說了

  二、轉發請註明源地址

相關文章
相關標籤/搜索