hashlist java_java中集合类HashSet、ArrayList、LinkedList总结
【HashSet】
1. HashSet存儲(chǔ)不能夠存儲(chǔ)相同的元素,元素是否相同的判斷:重寫(xiě)元素的equals方法。equals方法和hashCode方法必須兼容,如:equals方法判斷的是用戶的名字name,那么hashCode的返回的hashcode必須是name。hashcode();
2. HashSet存儲(chǔ)是無(wú)序的,保存的順序與添加的順序是不一致的,它不是線性結(jié)構(gòu),而是散列結(jié)構(gòu),(通過(guò)散列表:散列單元指向鏈表)。因此,HashSet的查詢效率相對(duì)比較高。
3. HashSet不是線程安全的,不是線程同步的。這需要自己實(shí)現(xiàn)線程同步:Collections.synchronizedCollection(),方法實(shí)現(xiàn)。
【ArrayList】
1. 不是線程安全的,不是線程同步的。
2.ArrayList是通過(guò)可變大小的數(shù)組實(shí)現(xiàn)的,允許null在內(nèi)的所有元素。
3.ArrayList中存放順序和添加順序是一致的。并且可重復(fù)元素。
4.ArrayList適合通過(guò)位子來(lái)讀取元素。
【LinkedList】
1.不是線程安全的,不是線程同步的。
2.LinkedList是通過(guò)雙向循環(huán)鏈表來(lái)實(shí)現(xiàn)的。
3.存放順序和添加順序是一致的。可添加重復(fù)元素。
4.適合鏈表頭尾操作和插入指定位置元素的操作。
ArrayList和LinkedList之間的數(shù)據(jù)傳遞可通過(guò)toArray()方法。
【HashMap】
1.非線程安全,不是線程同步。
2.添加順序和保存的順序是不一致的。
3.必須重寫(xiě)key的equals方法和hashCode方法。
4.HashMap的實(shí)際容量=容量*因子,默認(rèn)為16*0.75=12.所以考慮到HashMap的添加的效率問(wèn)題,根據(jù)實(shí)際情況來(lái)設(shè)計(jì)它的開(kāi)始的默認(rèn)的容量。
的操作方法根據(jù)api來(lái)查找。
5.添加的值中是允許有null的值存在的。
【Hashtable】
1.是線程安全的,是線程同步的,在實(shí)現(xiàn)線程同步的時(shí)候是不需要手動(dòng)來(lái)實(shí)現(xiàn)線程同步的。因此相對(duì)效率低。
2.添加的順序和保存的順序是不一致的。
3.添加的值中是不允許有null值存在的。
【TreeMap】
1.非線程安全,不是線程同步的。在必要的情況下必手動(dòng)實(shí)現(xiàn)線程同步。
2.在元素的添加,刪除和定位映射中效率相對(duì)hashMap較低。但是在排序方面TreeMap比較實(shí)用。
3.添加的值中允許有null值,但是在輸出的時(shí)候會(huì)報(bào)空指針異常。
以上信息并非原創(chuàng),僅作收藏學(xué)習(xí)用。
總結(jié)
以上是生活随笔為你收集整理的hashlist java_java中集合类HashSet、ArrayList、LinkedList总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java script 教程_Java
- 下一篇: win10怎么更改右键菜单 Win10如