Java 储存相同 key 的 map
Java About 1,220 wordsIdentityHashMap
- 判断的是
==
和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}
Views: 3,904 · Posted: 2019-04-08
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...