Set实现类性能对比
生活随笔
收集整理的這篇文章主要介紹了
Set实现类性能对比
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Set接口的實現類:
共同的特點:
1):都不允許元素重復.
2):都不是線程安全的類.
解決方案:Set s = Collections.synchronizedSet(Set對象);
HashSet: 不保證元素的先后添加順序.
底層才有的是哈希表算法,查詢效率極高.
判斷兩個對象是否相等的規則:
1):equals比較為true.
2):hashCode值相同.
LinkedHashSet:
HashSet的子類,底層也采用的是哈希表算法,但是也使用了鏈表算法來維持元素的先后添加順序.
判斷兩個對象是否相等的規則和HashSet相同.
因為需要多使用一個鏈表倆記錄元素的順序,所以性能相對于HashSet較低.
一般少用, 如果要求一個集合既要保證元素不重復,也需要記錄添加先后順序,才選擇使用LinkedHashSet.
TreeSet:不保證元素的先后添加順序,但是會對集合中的元素做排序操作.
底層才有紅黑樹算法(樹結構,比較擅長做范圍查詢).
TreeSet要么才有自然排序,要么定制排序.
HashSet做等值查詢效率高,TreeSet做范圍查詢效率高.
而我們更多的情況,都是做等值查詢, 在數據庫的索引中做范圍查詢較多,所以數結構主要用于做索引,用來提高查詢效率.
總結
以上是生活随笔為你收集整理的Set实现类性能对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RMQ算法,求区间最值
- 下一篇: node.js http客户端