Java 中 TreeMap、HashMap 和 LinkedHashMap 的区别
HashMap、TreeMap 和 LinkedHashMap 都实现了 java.util.Map 接口,它们的特点如下。
HashMap
HashMap 插入和查找的时间复杂度为 O(1)。
HashMap 允许一个 null 键并允许多个 null 值。
HashMap 不维护任何顺序。
TreeMap
TreeMap 插入和查找的时间复杂度为 O(logN)。
TreeMap 不允许 null 键,但允许多个 null 值。
TreeMap 维护顺序。它有序地以升序存储键。
LinkedHashMap
LinkedHashMap 插入和查找的时间复杂度为 O(1)。
LinkedHashMap 允许一个 null 键并允许多个 null 值。
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 的键是经过排序的。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程语言
C++
C#
MongoDB
MySQL
Javascript
PHP