📅  最后修改于: 2023-12-03 15:16:23.390000             🧑  作者: Mango
IdentityHashMap是Java中的一种具有特殊特性的Map集合。与其他Map集合不同,它的键对象的比较不是基于equals()方法,而是基于对象的内存地址。即只有当两个键对象的内存地址相同才认为它们相等,这种比较方法在某些场景下非常有用。size()方法是IdentityHashMap集合中常用的方法之一,它用来返回集合中键值对的数量。
public int size()
size()方法用来返回IdentityHashMap集合中键值对的数量。它不同于其他Map集合中的size()方法,因为IdentityHashMap是基于对象内存地址进行比较的,所以即使两个键对象equals()方法返回true,它们的内存地址不同也会被认为是不同的键。因此,IdentityHashMap中的键值对数量仅仅是基于键对象内存地址不同的数量,而不是基于键值对的数量。在实际使用中,需要特别注意。
IdentityHashMap<String, Integer> map = new IdentityHashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
map.put(new String("one"), 1);
System.out.println("map size = " + map.size()); // 输出结果为 3
在上述示例中,IdentityHashMap中有4个键值对,但是其中两个键虽然equals()方法返回true,但它们的内存地址不同,因此被认为是不同的键。因此,map.size()方法的返回值为3。