TreeMap 和 HashMap的區別
TreeMap:
基於紅黑樹實現。
提供了範圍查詢和排序功能。
所有操作的時間複雜度為 O(log n)。
不允許鍵為 null。
鍵必須實現 Comparable 介面或提供一個 Comparator。
HashMap:
基於雜湊表實現。
提供快速的查詢、插入和刪除操作。
平均時間複雜度為 O(1),最壞情況下為 O(n)。
允許一定數量的雜湊衝突。
鍵可以為 null。
TreeSet 和 HashSet
TreeSet:
基於紅黑樹實現。
元素按照自然順序或者自定義的 Comparator 進行排序。
提供了範圍查詢功能。
所有操作的時間複雜度為 O(log n)。
不允許元素為 null。
HashSet:
基於雜湊表實現。
提供快速的查詢、插入和刪除操作。
平均時間複雜度為 O(1),最壞情況下為 O(n)。
允許一定數量的雜湊衝突。
元素可以為 null。
使用場景
當需要有序的集合時,選擇 TreeMap 或 TreeSet。
當對效能要求較高,且不關心元素的順序時,選擇 HashMap 或 HashSet。
如果需要頻繁的查詢操作,HashMap 和 HashSet 更優。
如果需要維護鍵值對的對映關係,並且需要排序,選擇 TreeMap。
如果需要維護一組元素,並且需要排序,選擇 TreeSet。
方法使用上的不同
TreeMap 和 HashMap 都有 put, get, remove 等方法,但 TreeMap 還提供了 lowerKey, higherKey 等方法來進行範圍查詢。
TreeSet 和 HashSet 都有 add, remove, contains 等方法,但 TreeSet 還提供了 first, last 等方法來獲取集合中的第一個和最後一個元素。