一 代码示例
import java.util.*; public class WeakHashMapTest { public static void main(String[] args) { WeakHashMap whm = new WeakHashMap(); //HashMap whm = new HashMap(); // 将WeakHashMap中添加三个key-value对, // 三个key都是匿名字符串对象(没有其他引用) whm.put(new String("英语") , new String("优秀")); whm.put(new String("数学") , new String("及格")); whm.put(new String("英文") , new String("中等")); //将 WeakHashMap中添加一个key-value对, // 该key是一个系统缓存的字符串对象。 whm.put("java" , new String("中等")); // ① // 输出whm对象,将看到4个key-value对。 System.out.println(whm); // 通知系统立即进行垃圾回收 System.gc(); System.runFinalization(); // 通常情况下,将只看到一个key-value对。 System.out.println(whm); } }
二 运行结果
{英文=中等, java=中等, 数学=及格, 英语=优秀}
{java=中等}
当whm用HashMap创建时,结果如下。
{java=中等, 英文=中等, 数学=及格, 英语=优秀}
{java=中等, 英文=中等, 数学=及格, 英语=优秀}
三 结果分析
如果WeakHashMap对象的key所引用的对象没有被其他强引用变量所引用,则这些key所引用的对象可能被垃圾回收,WeakHashMap也可能自动删除这些key所对应的key-value对象。
相关推荐
- **WeakHashMap类** WeakHashMap是一种特殊的哈希表,它使用弱引用作为键,当键不再被引用时,即使没有显式地从集合中移除,也会自动清理。 **Map接口** Map接口存储键值对,不直接继承自Collection接口。常见的...
Hashtable 类IdentityHashMap 类WeakHashMap 类 Collections 类集合实现类特征图 泛形 泛型的使用 用泛型表示类 用泛型表示接口泛型方法 泛型通配符 反射 Class 类Field 类Method 类ClassLoader 类 枚举 枚举特性 ...
WeakHashMap 类 WeakHashMap 是 HashMap 的一个变种,它使用弱引用作为键。这意味着如果键不再被任何对象引用,那么即使在 WeakHashMap 中,这个键也会被垃圾收集器回收。这种方式可以防止内存泄漏,但也可能导致...
- **WeakHashMap类**:使用弱引用作为键的`Map`。 - **Collections类**:提供了一些静态方法来操作集合。 - **集合实现类特征图**:展示了不同集合实现之间的关系和特性。 #### 泛型 - **泛型的使用**:泛型允许...
java集合框架 3.6. LinkedHashSet类 4. Map接口 4.1. Map.Entry接口 4.2. SortedMap接口 4.3. AbstractMap抽象类 4.4. HashMap类和TreeMap类 4.4.1. HashMap类 ...4.6. WeakHashMap类 4.6. IdentityHashMap类
Map接口的实现类有Hashtable、HashMap和WeakHashMap。 1. Hashtable:线程安全的Map,不允许null键和null值。其行为与HashMap相似,但它是同步的,适用于多线程环境。 2. HashMap:基于哈希表的Map实现,允许null...
常见的Map实现类有Hashtable、HashMap和WeakHashMap。Hashtable与Vector类似,是线程安全的,但不推荐在现代Java中使用,因为它不允许null键和值。HashMap是非同步的,提供快速的查找,插入和删除操作,键和值都可以...
除了上述实现类,还有WeakHashMap、IdentityHashMap等特殊用途的Map实现,它们分别处理弱引用和比较对象引用相等的情况。 在实际开发中,选择合适的Map实现类取决于具体需求,如是否需要有序、是否考虑线程安全、...
5. **Hashtable** 和 **WeakHashMap**: 类似于HashMap,但线程安全,后者弱引用键对象,有助于内存管理。 类集框架还引入了其他实用工具类,如`Arrays`、`Collections`、`BitSet`、`Timer`等,以及用于日期和时间...
WeakHashMap则使用弱引用,当键不再被引用时,键值对会自动移除。 6. Deque接口:Deque(双端队列)接口扩展了Queue,支持在两端进行插入和移除操作。ArrayDeque和LinkedList都可以实现Deque接口。 Java集合类层次...
- `WeakHashMap`:基于弱引用的键,适用于缓存场景,当没有强引用指向键时,键会被垃圾回收器回收。 #### ArrayList与LinkedList对比 - `ArrayList`在随机访问时效率高于`LinkedList`,因为`LinkedList`需要从头...
最后,Java集合类的设计遵循了一些设计模式,比如工厂模式(Collections类中的静态工厂方法)、装饰器模式(如Collections.unmodifiableList()创建不可修改的列表)以及代理模式(WeakHashMap中的弱引用键)。...
### Java集合类详解 在Java编程中,集合类(Collections)是处理数据的重要工具,它们提供了灵活且高效的方式来存储、检索以及操作数据。Java集合框架主要包括两大类:`Collection`和`Map`。 #### Collection接口...
Map接口的实现类包括HashMap、TreeMap、WeakHashMap等。 HashMap是Map接口的基于哈希表的实现,提供了所有可选的映射操作,并允许使用null值和null键。 TreeMap是Map接口的基于树形结构的实现,提供了关于键的总体...
Java 类集框架是Java编程语言中用于存储和操作对象集合的核心组件。它提供了一系列接口和类,方便开发者处理各种数据结构,如列表、队列、集合、映射等。类集框架的最大父接口是`Collection`,而`Map`接口则是处理...
- **实现类**: `HashMap`, `HashTable`, `WeakHashMap`等。 **2. HashMap类** - **内部实现**: 使用哈希表实现,提供了高效的键值查找机制。 - **特点**: - 非线程安全:`HashMap`不是线程安全的,如果多个线程...
`WeakHashMap`是一种特殊的Map,它的键使用弱引用,当键不再被引用时,键值对会自动从Map中移除。 遍历集合时,`iterator()`方法是核心,它返回一个迭代器,通过`hasNext()`和`next()`方法可以依次访问集合中的元素...