Java 中 TreeMap、HashMap 和 LinkedHashMap 的区别
HashMap、TreeMap 和 LinkedHashMap 都实现了 java.util.Map 接口,其特征如下。
HashMap
HashMap 的插入和查找复杂度为 O(1)。
HashMap 允许一个空键和多个空值。
HashMap 不维护任何顺序。
TreeMap
TreeMap 的插入和查找复杂度为 O(logN)。
TreeMap 不允许空键,但允许多个空值。
TreeMap 维护顺序。它按排序和升序存储键。
LinkedHashMap
LinkedHashMap 的插入和查找复杂度为 O(1)。
LinkedHashMap 允许一个空键和多个空值。
LinkedHashMap 维护键值对插入时的顺序。
示例
import java.util.HashMap; import java.util.Hashtable; import java.util.LinkedHashMap; import java.util.Map; import java.util.TreeMap; public class Tester { public static void main(String args[]) { Map<String, String> map = new HashMap<String, String>(); map.put("One", "1"); map.put("Five", "5"); map.put("Four", "4"); map.put("Two", "2"); map.put("Three", "3"); System.out.println("HashMap:
" + map); Map<String, String> map1 = new LinkedHashMap<String, String>(); map1.put("One", "1"); map1.put("Five", "5"); map1.put("Four", "4"); map1.put("Two", "2"); map1.put("Three", "3"); System.out.println("LinkedHashMap:
" + map1); Map<String, String> map2 = new TreeMap<String, String>(); map2.put("One", "1"); map2.put("Five", "5"); map2.put("Four", "4"); map2.put("Two", "2"); map2.put("Three", "3"); System.out.println("TreeMap:
" + map2); } }
输出
HashMap: {Five = 5, One = 1, Four = 4, Two = 2, Three = 3} LinkedHashMap: {One = 1, Five = 5, Four = 4, Two = 2, Three = 3} TreeMap: {Five = 5, Four = 4, One = 1, Three = 3, Two = 2}
在此处,你会看到 HashMap 的键顺序是随机的,LinkedHashMap 仍保留插入键时的顺序,而 TreeMap 的键是按顺序排列的。
广告