集合之HashMap、Hashtable

HashMap

基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,
并允许使用 null 值和 null 键。
(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,
特别是它不保证该顺序恒久不变。
特点:

键无序,唯一,类似于Set集合
值有序,可重复,类似于List
底层数据结构是哈希表,保证键唯一
允许键为null,值为null

定义:
HashMap<String, Student> hm = new HashMap<>();
hm.put("208071701", new Student("208071701", "隔壁老王", 18, 80.0));
hm.put("208071702", new Student("208071702", "隔壁老李", 18, 81.0));
hm.put("208071703", new Student("208071703", "隔壁老周", 19, 19.0));


// double score = hm.get("208071703").getScore();
// System.out.println(score);

遍历:
for (String key : hm.keySet()) {
  Student s = hm.get(key);
  System.out.println(key + "|" + s.getName() + "|" + s.getAge() + "|" + s.getScore());
}


HashMap底层是哈希表结构

键如果是系统的类,一般都是重写hashCode和equals
如果是自己写的类作为键,需要自己重写hashCode和equals,否则键就不会去除重复元素

LinkedHashMap
底层数据结构是 链表和哈希表
链表保证键有序
哈希表保证键唯一
LinkedHashMap<String, String> lhm = new LinkedHashMap<>()
用法一样

hashtable

1是线程安全的,效率低
2.不允许存储null值和null键

原文地址:https://www.cnblogs.com/lrxvx/p/9407740.html