微网站开发难度,怎么推广外贸网站,wordpress 点赞分享,电商网站大连在Java中#xff0c;有一种key值可以重复的map#xff0c;就是IdentityHashMap。在IdentityHashMap中#xff0c;判断两个键值k1和 k2相等的条件是 k1 k2 。在正常的Map 实现(如 HashMap)中#xff0c;当且仅当满足下列条件时才认为两个键 k1 和 k2 相等#xff1a;(k1nu…在Java中有一种key值可以重复的map就是IdentityHashMap。在IdentityHashMap中判断两个键值k1和 k2相等的条件是 k1 k2 。在正常的Map 实现(如 HashMap)中当且仅当满足下列条件时才认为两个键 k1 和 k2 相等(k1null ? k2null : e1.equals(e2))。IdentityHashMap类利用哈希表实现 Map 接口比较键(和值)时使用引用相等性代替对象相等性。该类不是 通用 Map 实现此类实现 Map 接口时它有意违反 Map 的常规协定该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。在使用IdentityHashMap有些需要注意的地方:例子1IdentityHashMap map new IdentityHashMap();map.put(newString(xx),first);map.put(newString(xx),second);for (Entry entry : map.entrySet()) {System.out.print(entry.getKey() );System.out.println(entry.getValue());}System.out.println(idenMapmap.containsKey(xx));System.out.println(idenMapmap.get(xx));输出结果是xx firstxx secondidenMapfalseidenMapnull例子2IdentityHashMap map new IdentityHashMap();String fsString newString(xx);map.put(fsString,first);map.put(newString(xx),second);for(Entry entry : map.entrySet()) {System.out.print(entry.getKey() );System.out.println(entry.getValue());}System.out.println(idenMapmap.containsKey(fsString));System.out.println(idenMapmap.get(fsString));输出结果是xx secondxx firstidenMaptrueidenMapfirst例子3IdentityHashMap map new IdentityHashMap();String fsString newString(xx);map.put(fsString,first);map.put(fsString,second);for(Entry entry : map.entrySet()) {System.out.print(entry.getKey() );System.out.println(entry.getValue());}System.out.println(idenMapmap.containsKey(fsString));System.out.println(idenMapmap.get(fsString));输出结果是xx secondidenMaptrueidenMapsecond例子4IdentityHashMap map new IdentityHashMap();String fsString newString(xx);String secString newString(xx);map.put(fsString,first);map.put(secString,second);for(Entry entry : map.entrySet()) {System.out.print(entry.getKey() );System.out.println(entry.getValue());}System.out.println(idenMapmap.containsKey(fsString));System.out.println(idenMapmap.get(fsString));System.out.println(idenMapmap.containsKey(secString));System.out.println(idenMapmap.get(secString));输出结果是xx firstxx secondidenMaptrueidenMapfirstidenMaptrueidenMapsecond例子5IdentityHashMap map new IdentityHashMap();map.put(xx,first);map.put(xx,second);for(Entry entry : map.entrySet()) {System.out.print(entry.getKey() );System.out.println(entry.getValue());}输出结果是xx second可以看到在IdentityHashMap中是判断key是否为同一个对象而不是普通HashMap的equals方式判断。参考http://blog.csdn.net/stoneok07/article/details/7262676