Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 其他

Java APIs 和框架

Java 类引用

Java 有用资源

Java - IdentityHashMap 类



此类实现 AbstractMap。它与 HashMap 类似,不同之处在于它在比较元素时使用引用相等性。

此类不是通用的 Map 实现。虽然此类实现了 Map 接口,但它有意违反了 Map 的通用约定,该约定要求在比较对象时使用 equals 方法。

此类仅设计用于很少情况下需要引用相等语义的情况。此类为基本操作(get 和 put)提供了恒定时间性能,假设系统标识哈希函数 (System.identityHashCode(Object)) 将元素正确地分散到桶中。

此类具有一个调整参数(它会影响性能但不会影响语义):预期的最大大小。此参数是映射预计容纳的最大键值映射数。

以下是 IdentityHashMap 支持的构造函数列表。

序号 构造函数和描述
1

IdentityHashMap()

此构造函数使用默认的预期最大大小 (21) 构造一个新的空标识哈希映射。

2

IdentityHashMap(int expectedMaxSize)

此构造函数使用指定的预期最大大小构造一个新的空 IdentityHashMap。

3

IdentityHashMap(Map m)

此构造函数构造一个新的标识哈希映射,其中包含指定映射中的键值映射。

除了从其父类继承的方法外,IdentityHashMap 还定义了以下方法:

序号 方法和描述
1

void clear()

从此映射中删除所有映射。

2

Object clone()

返回此标识哈希映射的浅表副本:键和值本身不会被克隆。

3

boolean containsKey(Object key)

测试指定的对象引用是否为此标识哈希映射中的键。

4

boolean containsValue(Object value)

测试指定的对象引用是否为此标识哈希映射中的值。

5

Set entrySet()

返回此映射中包含的映射的集合视图。

6

boolean equals(Object o)

将指定的对象与此映射进行相等性比较。

7

Object get(Object key)

返回为此标识哈希映射中指定的键映射的值,如果映射不包含此键的映射,则返回 null。

8

int hashCode()

返回此映射的哈希代码值。

9

boolean isEmpty()

如果此标识哈希映射不包含任何键值映射,则返回 true。

10

Set keySet()

返回此映射中包含的键的基于标识的集合视图。

11

Object put(Object key, Object value)

将指定的值与此标识哈希映射中的指定键关联。

12

void putAll(Map t)

将指定映射中的所有映射复制到此映射中。这些映射将替换此映射中当前在指定映射中的任何键所具有的任何映射。

13

Object remove(Object key)

如果存在,则从此映射中删除此键的映射。

14

int size()

返回此标识哈希映射中的键值映射数量。

15

Collection values()

返回此映射中包含的值的集合视图。

示例

以下程序演示了此集合支持的几种方法。

import java.util.*;
public class IdentityHashMapDemo {

   public static void main(String args[]) {
      // Create a hash map
      IdentityHashMap ihm = new IdentityHashMap();
 
      // Put elements to the map
      ihm.put("Zara", new Double(3434.34));
      ihm.put("Mahnaz", new Double(123.22));
      ihm.put("Ayan", new Double(1378.00));
      ihm.put("Daisy", new Double(99.22));
      ihm.put("Qadir", new Double(-19.08));
      
      // Get a set of the entries
      Set set = ihm.entrySet();
      
      // Get an iterator
      Iterator i = set.iterator();
      
      // Display elements
      while(i.hasNext()) {
         Map.Entry me = (Map.Entry)i.next();
         System.out.print(me.getKey() + ": ");
         System.out.println(me.getValue());
      }
      System.out.println();
      
      // Deposit 1000 into Zara's account
      double balance = ((Double)ihm.get("Zara")).doubleValue();
      ihm.put("Zara", new Double(balance + 1000));
      System.out.println("Zara's new balance: " + ihm.get("Zara"));
   }
}

这将产生以下结果:

输出

Ayan: 1378.0
Qadir: -19.08
Mahnaz: 123.22
Daisy: 99.22
Zara: 3434.34

Zara's new balance: 4434.34
java_collections.htm
广告
© . All rights reserved.