Java 在地图中添加相同的关键点两次
我对Java 在地图中添加相同的关键点两次,java,collections,hashmap,Java,Collections,Hashmap,我对Maps进行了研究,发现如果故意添加两次相同的键,那么贴图的大小将保持不变。这背后的技术原因是什么 Map map=new HashMap();//HashMap key random order. map.put("Amit","Java"); map.put("Amit","Java"); 用于检索的代码 System.out.println("There are "+map.size()+" elements in the map.");
Map
s进行了研究,发现如果故意添加两次相同的键,那么贴图的大小将保持不变。这背后的技术原因是什么
Map map=new HashMap();//HashMap key random order.
map.put("Amit","Java");
map.put("Amit","Java");
用于检索的代码
System.out.println("There are "+map.size()+" elements in the map.");
System.out.println("Content of Map are...");
Set s=map.entrySet();
Iterator itr=s.iterator();
while(itr.hasNext())
{
Map.Entry m=(Map.Entry)itr.next();
System.out.println(m.getKey()+"\t"+m.getValue()+"\t"+ m.hashCode());
}
我得到的结果是:
There are 1 elements in the map.
Content of Map are...
Amit Java 3943477
因为密钥必须是唯一的。因此,如果将新值与现有键关联,它将覆盖现有项的值,而不是创建新项:
将键映射到值的对象。地图不能包含重复的键;每个键最多可以映射到一个值
您还可以检查(我的):
将指定值与此映射中的指定键关联(可选操作)如果映射之前包含键的映射,则旧值将替换为指定值。(当且仅当m.containsKey(k)返回true时,称映射m包含键k的映射。)
如果新键与任何现有键相同,则映射中的值将被覆盖。标准Java映射每个键只能有一个值。请注意,该值可以是一个集合,因此可以有效地为每个键存储多个值
如果希望在地图中有多个相同的关键点,则存在多种解决方案。例如,看番石榴。这就是地图的全部意义。@assylias..谢谢,这条规则适用于所有形式的地图,无论是树地图等。。!!如果此规则不适用,则它不是有效的
Map
实现。所以,是的。@user1579492实现map的每个类都应该遵守接口中定义的约定。JDK中的所有map实现都符合map的契约。由于它在map的契约中,所以它必须应用于实现map的所有内容,否则它就会违反契约。@user1579492 javadoc处于联机状态。这是我文章的第一个链接。javadoc还在最顶端列出了所有实现类。。