Java 储存相同 key 的 map
Java 大约 1220 字IdentityHashMap
- 判断的是
==
和equals
的区别;- 如果
put
的是"abc"
,那么key
会覆盖。 - 如果
put
的是new String("abc")
,则不会覆盖。
- 如果
==
判断的是int
、float
等基础类型的值是否相等,equals
判断的是地址值是否相等;HashMap
判断的是hashCode()
和equals()
是否相等,复写了这两个方法的,则认为是重复key;IdentityHashMap
判断的是地址值是否相等,如果是new的对象,地址值都不同;
@Data
public class TestMap {
private String a;
private String b;
}
@Test
public void testIdentityHashMap() {
Map<TestMap, String> identityHashMap = new IdentityHashMap<>();
TestMap testMap1 = new TestMap();
testMap1.setA("a");
testMap1.setB("b");
TestMap testMap2 = new TestMap();
testMap2.setA("a");
testMap2.setB("b");
identityHashMap.put(testMap1, "testMap1");
identityHashMap.put(testMap2, "testMap2");
System.out.println(identityHashMap.toString());
Map<TestMap, String> hashMap = new HashMap<>();
hashMap.put(testMap1, "testMap1");
hashMap.put(testMap2, "testMap2");
System.out.println(hashMap.toString());
Map<String, String> map = new HashMap<>();
map.put(new String("1"), "123");
map.put(new String("1"), "456");
System.out.println(map.toString());
}
输出:
{TestMap(a=a, b=b)=testMap1, TestMap(a=a, b=b)=testMap2}
{TestMap(a=a, b=b)=testMap2}
{1=456}
阅读 2715 · 发布于 2019-04-08
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
GoJS ContextMenu 右键菜单阅读 1478
-
Arthas 使用 monitor 在指定时间段内统计方法的调用次数、平均返回时间等阅读 2682
-
Python 基础语法阅读 1477
-
Ubuntu 安装 Docker阅读 923
-
Android 仿 iOS 删除时抖动效果阅读 3514
-
minikube 使用 Hyper-V 安装迷你版 Kubernetes 集群阅读 1308
-
Android 监听来电广播阅读 4781
-
Android ScrollView 嵌套 ListView 问题阅读 1263
-
OpenJDK 配置使用 VisualVM阅读 2973
-
OpenResty 使用 lua-resty-auto-ssl 配置 https 证书阅读 5045