- arraylist: 有序,可以重複,查詢效率高,插入效率低。線程不安全,底層是數組。
- linkedList: 有序,可以重複,查詢效率低,插入效率高,線程不安全,底層是鏈表。
- vector: 有序,可以重複,底層是數組,所有方法都加了鎖,是線程安全的。
- set: 無序的(無序指的是沒有索引的概念),不能重複,通過equesl判斷 如果是true 就不能加入。最多隻能有一個是null,
- map:鍵值對的方式存儲數據,允許有個一個key是null,如果第二個key進來會把原來的key覆蓋掉,也就是說鍵不能重複,但是value能重複,也可以是多個value,線程不安全。
- hashtable: 與hashmap的用法一樣,就是不允許key或者value的值是null。線程安全
- hashset: 無序的,不能重複,裏面有個map屬性,這就是HashSet的核心祕密。我們再看add()方法,發現增加一個元素說白了就是在map中增加一個鍵值對,鍵對象就是這個元素,值對象是名爲PRESENT的Object對象。說白了,就是“往set中加入元素,本質就是把這個元素作爲key加入到了內部的map中”,由於map的key不能重複,所以hashset肯定不能重複
- Queue: 隊列,先進先出,LinkedList類實現了Queue接口,add(),remove(),element(),這些方法操作失敗到時候會拋出異常。但是poll()返回隊列用第一個元素並刪除。
集合的基本區別
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.