📜  Java中的Hashmap与WeakHashMap(1)

📅  最后修改于: 2023-12-03 14:42:54.435000             🧑  作者: Mango

Java中的HashMap与WeakHashMap

HashMap

HashMap是Java中的一个常用数据结构,用于存储键值对并快速进行查找和访问。HashMap主要通过哈希表来实现,哈希表是一个数组加链表的数据结构,其中数组的每个元素称为"桶",每个桶中会存储一个链表或红黑树,哈希表通过哈希函数将键映射到不同的桶中,从而实现快速查找。

使用方法
HashMap<String, Object> map = new HashMap<>();
map.put("key1", "value1");
Object value = map.get("key1");
特点
  • 允许null键和null值
  • 线程不安全
  • 效率高,基本实现了常数时间的查找和插入操作
WeakHashMap

WeakHashMap是HashMap的一种变体,它的特点是允许对键的垃圾回收,也就是说如果一个键没有被其他对象引用,那么当垃圾回收器回收该键时,对应的键值对也会从WeakHashMap中自动移除。

使用方法
WeakHashMap<String, Object> map = new WeakHashMap<>();
Object value = new Object();
String key = "key1";
map.put(key, value);
// 假设没有其他对象引用了value,下面代码执行后map将不再包含"key1"键的键值对
value = null;
System.gc();
特点
  • 允许null键和null值
  • 线程不安全
  • 键是弱引用,当键没有被其他对象引用时,键值对会自动从WeakHashMap中移除
  • 效率比HashMap略低,因为需要对无效键值对进行清理操作
总结

HashMap和WeakHashMap都是常见的Java中的数据结构,它们各自有自己的特点和适用场景。在使用时应该根据实际情况选择合适的数据结构,以达到最佳的性能和效率。