1 IdentityHashMap类简介
IdentityHashMap实现类的实现机制与HashMap基本相似,但它在处理两个key相等时比较独特:在IdentityHashMap中,当且仅当两个key严格相等(key1 == key2)时,IdentityHashMap才认为两个键相等。
2 代码示例
import java.util.*; public class IdentityHashMapTest { public static void main(String[] args) { IdentityHashMap ihm = new IdentityHashMap(); // 下面两行代码将会向IdentityHashMap对象中添加两个key-value对 ihm.put(new String("语文") , 89); ihm.put(new String("语文") , 78); // 下面两行代码只会向IdentityHashMap对象中添加一个key-value对 ihm.put("java" , 93); ihm.put("java" , 98); System.out.println(ihm); } }
3 运行结果
{语文=89, java=98, 语文=78}
4 代码分析
上面代码试图向IdentityHashMap对象添加4个key-value对,前2个key-value对中的key是新创建的字符串对象,他们通过==比较不相等,所以IdentityHashMap会把他们当成2个key来处理;后2个key-value对中的key都是字符串直接量,所以他们通过==比较返回true,IdentityHashMap会认为是同一个key,因此只有1次可以添加成功。
相关推荐
在Java编程语言中,`IdentityHashMap`是`java.lang.identityhashmap`包下的一种特殊映射类,它与我们常见的`HashMap`有所不同。`HashMap`基于键的`equals()`方法来判断键是否相等,而`IdentityHashMap`则是基于对象...
除了上述实现类,还有WeakHashMap、IdentityHashMap等特殊用途的Map实现,它们分别处理弱引用和比较对象引用相等的情况。 在实际开发中,选择合适的Map实现类取决于具体需求,如是否需要有序、是否考虑线程安全、...
IdentityHashMap与HashMap等常见的Map实现不同,它在判断键值对的键是否相等时,并不依赖于`equals()`方法,而是基于对象的引用相等性,即只有当`k1 == k2`时,才认为两个键相等。这是IdentityHashMap最核心的特性,...
- **IdentityHashMap**: 在这种实现中,键的相等性是由`==`操作符而不是`equals`方法决定的。这意味着即使两个对象的字段相同,但如果它们不是同一个对象实例,则会被认为是不同的键。 ### 总结 在选择使用`List`、...
本文将深入探讨标题中提到的HashMap类、IdentityHashMap类、SortedMap接口以及自定义类在Map中的使用,以及随机数在集合中的应用。 首先,HashMap类是Java中最常用的Map实现之一,它基于哈希表,提供了O(1)的平均...
【标题】:集合框架中的set、list和map区别与联系 在Java编程中,集合框架是数据结构的核心,其中set、list和map是最常见的三种数据结构。这些数据结构各有特点,适应不同的应用场景。 1. **List(列表)** - **...
- HashSet:无序存储,不保证元素顺序,允许快速查找。 - TreeSet:有序存储,遵循自然排序或自定义比较器排序,实现了SortedSet接口。 - LinkedHashSet:按照元素插入顺序进行遍历,保持插入顺序。 - **List...
IdentityHashMap是Java中的一种特殊的哈希表实现,它使用"引用相等"(而不是"对象相等")来判断键的唯一性。具体来说,当且仅当两个键引用同一个对象时,它们被认为是相等的。
在Java编程语言中,集合框架提供了多种数据结构实现,包括`List`、`Set`和`Map`,它们各自有着独特的特性和用途。 1. **List**: - **有序性**:List是一个有序的数据结构,这意味着它维护了元素插入时的顺序。当...
Map接口的实现类有Hashtable、HashMap、LinkedHashMap、WeakHashMap和IdentityHashMap。Hashtable与HashMap类似,但它是线程安全的,不接受null键值。HashMap是非同步的,允许null键和null值。LinkedHashMap保持了...
- `Set`接口不保证元素的顺序,不允许元素重复。`HashSet`是基于散列的`Set`实现,`TreeSet`则是有序的,基于`Tree`实现,它要求元素实现`Comparable`接口。 - `SortedSet`接口是`Set`的子接口,保证了元素的排序...
本文将深入探讨标题和描述中提到的一些关键集合类型,包括Map、Set、List、Queue、Stack以及它们的特点和用法。 首先,Collection接口是所有集合类型的父接口,它分为两个主要子接口:List和Set。List接口用于存储...
`Map`的主要实现类有`HashMap`、`TreeMap`、`LinkedHashMap`、`IdentityHashMap`和`WeakHashMap`。其中,`HashMap`提供基本的键值对存储,`TreeMap`支持有序遍历,`LinkedHashMap`保持插入顺序,`IdentityHashMap`...
Java 集合框架是Java编程语言中一个重要的组成部分,它提供了一套接口和类,使得程序员能够方便地管理和操作对象的集合。这个框架包括了多种数据结构,如列表(List)、集合(Set)、映射(Map)以及迭代器...
java集合框架 3.6. LinkedHashSet类 4. Map接口 4.1. Map.Entry接口 4.2. SortedMap接口 4.3. AbstractMap抽象类 4.4. HashMap类和TreeMap类 4.4.1. HashMap类 4.4.2. TreeMap类 ...4.6. IdentityHashMap类
`HashSet`是最基础的实现,不保证元素的顺序;`TreeSet`基于红黑树结构,提供了有序的元素,可以按自然顺序或自定义比较器排序;`LinkedHashSet`则保持了元素的插入顺序。 `Map`接口不同于`Collection`,它用于存储...
"java中级面试题(自己汇总)" 本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、...* 同HashMap,IdentityHashMap也是无序的,并且该类不是
`Set`接口中的`HashSet`不保证元素顺序,但允许快速查找,它要求元素的`equals()`和`hashCode()`方法被正确实现以确保元素唯一性。`TreeSet`通过实现`SortedSet`接口提供了有序遍历,元素需要实现`Comparable`接口...
- **IdentityHashMap类**:使用系统身份哈希码确定相等性。 - **WeakHashMap类**:使用弱引用作为键的`Map`。 - **Collections类**:提供了一些静态方法来操作集合。 - **集合实现类特征图**:展示了不同集合实现...