Java中對Set和Map的選擇

2021-09-12 11:21:53 字數 856 閱讀 9360

hashset的效能基本上總是比treeset好,特別是在新增和查詢元素時,而這兩個操作也是最重要的操作。treeset存在的唯一原因是它可以維持元素的排序狀態,所以,只有當需要乙個 排好序的set時,才應該使用treeset。因為其內部結構支援排序,並且因為迭代是我們更有可能執行的操作,所以,用treeset迭代通常比用hashset要快。

注意,對於插入操作,linkedhashset比hashset的代價更高,這是由維護鍊錶所帶來額外開銷造成的。

hashtable的效能大體上與hashmap相當。 因為hashmap是用來替代hashtable的 , 因此它們使用了相同的底層儲存和查詢機制, 這並沒有什麼令人吃驚的。

treemap通常比hashmap要慢。 與使用treeset一樣, treemap是一種建立有序列表的方式。 樹的行為是:總是保證有序, 並且不必進行特殊的排序。 一旦你填充了乙個treemap, 就可以調keyset()方法來獲取鍵的set檢視, 然後呼叫toarray()來產生由這些鍵構成的陣列。 之後,你可以使用靜態方法arrays.binarysearch()在排序陣列中快速查詢物件。當然,這只有在hashmap的行為不可接受的情況下才有意義,因為hashmap本身就被設計為可以快速查詢鍵。 你還可以很方便地通過單個的物件建立操作,或者是呼叫putall(),從treemap中建立hashmap。最後,當使用map時,你的第一選擇應該是hashmap,只有在你要求map始終保持有序時,才 需要使用treemap。

linkedhashmap在插人時比hashmap慢一點,因為它維護雜湊資料結構的同時還要維護鍊錶(以保持插人順序)。正是由於這個列表,使得其迭代速度更快。

ldentityfhashmap則具有完全不同的效能,因為它使用==而不是equals()來比較元素。

Java的集合Set和Map的簡單精闢講解

解釋 儲存的資料是無序的,不可以重複。分類 hashset class person1 public person1 string name,int age override public string tostring 重寫hashcode方法 override public int hashco...

C C 中map和set巢狀使用

邊用邊記錄,所以不斷更新中.目錄 1.標頭檔案 2.定義 3.迭代器 4.判斷map中某個鍵值對是否存在 5.插入值 6.遍歷map中巢狀的set include include 例如string和set鍵值對 map temp map iterator it find 函式 map itearat...

Java對Map的遍歷

public static void main string args 第二種 system.out.println 通過map.entryset使用iterator遍歷key和value iterator it map.entryset iterator while it.hasnext 第三種 ...