LinledHashMap、Hashtable集合
LinledHashMap
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。
底层:哈希表+链表(记录元素顺序)
打印输出一下:
public static void main(String[] args) {
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put("a","b");
map.put("c","d");
map.put("e","f");
map.put("a","c");
System.out.println(map);
}
}
map是不可以存储重复元素的
而且还是有序的
案例:
public static void main(String[] args) {
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put("a","b");
map.put("c","d");
map.put("e","f");
map.put("a","c");
System.out.println(map);
}
Hashtable集合
Hashtable集合:底层也是一个哈希表,是一个线程安全的集合,是单集合,速度慢
Hashtable不可以存储null值,null键
案例:
public static void aa(){
Hashtable<Integer, String> hashtable = new Hashtable<>();
hashtable.put(null,"a");
hashtable.put(2,"a");
hashtable.put(null,"a");
System.out.println(hashtable);
}
}
写入空值的话 会报错