`

key可以重复的Map集合:IdentityHashMap

    博客分类:
  • Map
 
阅读更多

IdentityHashMap:key可以重复的Map集合

   key允许重复,只要两个对象的地址不相等即可。

 

例:

 

class Person {                              
    private String name;                  
    private int age;                       

    public Person(String name, int age) {  
        this.name = name;                  
        this.age = age;                    
    } 

    public boolean equals(Object obj) {   
// 判断地址是否相等  ,返回true表示同一对象 
        if (this == obj) {                 
            return true;                   
        } 
// 传递进来的不是本类的对象 ,返回false表示不是同一对象 
        if (!(obj instanceof Person)) {    
            return false;                  
        } 

// 进行向下转型 
        Person p = (Person) obj;           
        if (this.name.equals(p.name) &&this.age == p.age) { 
            return true ;                  
        }else{ 
            return false ;                 
        } 
    } 
    public int hashCode(){                   
        return this.name.hashCode() * this.age ; 
    } 
    public String toString() {                   
        return "姓名:" + this.name + ";年龄:" + this.age;  
    } 
}
 
Map<Person, String> map = new IdentityHashMap<Person, String>();       

map.put(new Person("A", 30), "A1");   
map.put(new Person("A", 30), "A2");  
map.put(new Person("B", 31), "lisi");    

Set<Map.Entry<Person, String>> allSet = map.entrySet();               
Iterator<Map.Entry<Person, String>> iter = allSet.iterator();          
while (iter.hasNext()) {              
   Map.Entry<Person, String> me = iter.next();  
   System.out.println(me.getKey()+ " --> " + me.getValue()); 
   } 
 
分享到:
评论

相关推荐

    集合Map

    例如,如果一个应用需要多次使用相同的对象作为键,而这些对象的`equals()`方法返回true,那么使用IdentityHashMap可以避免创建多个相同内容的对象,从而节省内存。 三、IdentityHashMap的实现细节 ...

    java集合-IdentityHashMap的使用

    IdentityHashMap是Java中的一种特殊的哈希表实现,它使用"引用相等"(而不是"对象相等")来判断键的唯一性。具体来说,当且仅当两个键引用同一个对象时,它们被认为是相等的。

    JAVA中IdentityHashMap使用.rar

    2. **非线程安全**:与大多数其他集合类一样,`IdentityHashMap`不是线程安全的。如果你需要在多线程环境中使用,需要自行添加同步机制或使用`Collections.synchronizedMap()`来创建一个线程安全的版本。 3. **无序...

    Java中大集合

    例如,你可以生成一个包含不重复随机整数的集合,或者创建一个按特定概率分布的随机元素集合。 总结来说,Java集合框架提供了丰富的数据结构和算法,能够适应各种编程需求。HashMap和IdentityHashMap满足了快速存取...

    java集合与通用集合

    `Set`接口确保集合中的元素唯一,不允许重复,并且支持数学集合操作,如交集和并集。常见的实现类有`HashSet`、`TreeSet`和`LinkedHashSet`。`List`接口则维护元素的顺序,并允许通过索引访问,常见的实现类有`...

    java 集合部分笔记

    - **集合和数组的区别**:集合只能保存对象,而数组可以保存基本类型和对象。集合提供了更灵活的数据管理方式,例如动态扩容和多样化数据结构。 - **集合的分类**:Java集合主要分为两大类,即Collection和Map。...

    set,list,map区别与联系.docx

    - **特点**:Map是一种键值对的数据结构,键(key)必须唯一,而值(value)可以重复。Map主要用于根据键来查找对应的值。 - **HashMap**:高效查找,基于哈希表,键和值都必须重写equals()和hashCode()。 - **...

    java中list、set和map 的区别

    如果需要确保集合中没有重复元素,则可以选择`Set`;而当需要存储键值对时,则应该使用`Map`。每种类型的集合都有其特定的优点和适用场景,理解它们之间的区别有助于编写更加高效、易于维护的代码。

    java Collection&Map

    - IdentityHashMap:使用“引用相等”而非“内容相等”来比较键值对,适用于特定场景。 - WeakHashMap:键是弱引用,一旦键不再被引用,即使值仍然存在,键值对也会被自动移除,依赖于垃圾回收机制。 总结起来,...

    java 运用映射的相关类(Map)

    键必须是唯一的,而值则可以重复。 2. **无序性**:Map中的元素没有特定的顺序,尽管某些实现类如LinkedHashMap提供了按照插入或访问顺序维护元素的选项。 3. **键的唯一性**:键对象不能重复,如果尝试插入一个已...

    java中集合的用法与区别.docx

    Map接口则是用于存储键值对的集合,键(Key)必须是唯一的,而值(Value)可以重复。Map接口的实现类有Hashtable、HashMap、LinkedHashMap、WeakHashMap和IdentityHashMap。Hashtable与HashMap类似,但它是线程安全...

    Java 集合框架高难度进阶版面试题集锦解析

    - Map 存储的是键值对,键是唯一的,而值可以重复。Map 提供了通过键来访问和操作元素的能力。 - Set 是元素的集合,每个元素都是唯一的,没有键值对的概念。 3. ArrayList 和 LinkedList 的差异: - ArrayList ...

    Java集合框架

    `Map`接口不同于`Collection`,它用于存储键值对(key-value pairs),而不是单一的元素。`HashMap`是最常用的`Map`实现,提供了快速的查找和插入。`TreeMap`基于红黑树,保持键的排序;`IdentityHashMap`比较键时使用...

    set,list,map区别与联系.pdf

    - **键值对**:Map是一种键值对的数据结构,它将唯一的键与对应的值关联起来,键必须唯一,但值可以重复。 - **无序性**:Map通常是无序的,但`TreeMap`和`LinkedHashMap`提供了排序或插入顺序的保证。 - **功能...

    map,list,set,stack,queue,vector等区别和特点1

    Map中的键是唯一的,值可以重复。Hashtable是线程安全的Map实现,而HashMap非线程安全但更高效。HashMap使用哈希函数快速定位键值对,而Hashtable不允许null键和值。LinkedHashMap保持插入顺序,WeakHashMap则允许弱...

    java中级面试题(自己汇总)

    本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 集合 * List和Set都是继承自...

    1-Collections-Overview-Section-Java-Collections-S_overview

    - **Set**: 不允许重复元素的集合。HashSet是最基础的实现,基于哈希表;TreeSet则保证元素排序,基于红黑树数据结构。 - **Queue**: 代表先进先出(FIFO)的数据结构,例如LinkedList也可作为队列使用,还有...

    jdk 的集合框架的主体结构

    Java集合框架是Java编程...总之,Java集合框架为开发者提供了丰富多样的数据结构和操作工具,可以根据具体需求选择合适的数据结构和算法,提高代码的可读性和性能。理解和熟练使用集合框架是Java程序员必备的技能之一。

    Java 基础核心总结.md

    - **IdentityHashMap类**:使用系统身份哈希码确定相等性。 - **WeakHashMap类**:使用弱引用作为键的`Map`。 - **Collections类**:提供了一些静态方法来操作集合。 - **集合实现类特征图**:展示了不同集合实现...

Global site tag (gtag.js) - Google Analytics