📅  最后修改于: 2023-12-03 14:42:54.583000             🧑  作者: Mango
IdentityHashMap是Java中的一种特殊Map,它使用"=="而不是"equals()"方法来比较键(key)。那么,它的remove()方法也很特殊,让我们来了解一下。
IdentityHashMap维护着键值对的映射关系。和HashMap不同的是,IdentityHashMap使用"=="方法而不是"equals()"方法来判断键值是否相等。
因为IdentityHashMap使用"=="而不是"equals()"方法来比较键,所以它不支持null作为键。
IdentityHashMap的remove()方法用于从Map中删除某个键值对。它的语法如下:
public V remove(Object key)
key:要从Map中删除的键。
返回值:删除的键对应的值,如果键不存在,则返回null。
与HashMap类似,IdentityHashMap的remove()方法在删除指定键时,会返回相应的值。如果键不存在,返回null。
需要注意的是,IdentityHashMap使用"=="而不是"equals()"方法来比较键,所以删除键时,需要传入其完全相等的引用。
IdentityHashMap<String, Integer> map = new IdentityHashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
int result = map.remove("one"); // 删除"one"
System.out.println(result); // output: 1
result = map.remove("four"); // 删除不存在的键"four"
System.out.println(result); // output: null
String key = new String("three");
result = map.remove(key); // 删除存在的键"three"
System.out.println(result); // output: null
key = "two";
result = map.remove(key); // 删除存在的键"two"
System.out.println(result); // output: 2
示例代码中,我们通过put()方法向IdentityHashMap中添加了三个键值对。然后,我们分别删除了存在和不存在的键,最后输出了删除的结果。
需要注意的是,示例代码中的"=="比较只适用于常量字符串,而对于new String()创建的实例对象,需要使用equals()方法来进行比较。