Java IdentityHashMap示例

时间:2020-02-23 14:37:10  来源:igfitidea点击:

IdentityHashMap实现了Map接口,当选中k1==k2时,两个键被认为是相等的(不是通过使用equals方法)。这本身违反了Map的通用契约,这意味着IdentityHashMap显然不是一个通用的Map实现。这个类在很多情况下是有用的。

IdentityHashMap允许空值和空键,以及所有可选的映射操作。但是,这个类不能保证顺序会随着时间的推移保持不变。

就时间复杂性而言,此类为基本操作(如getput)提供恒定的时间性能

另外,需要注意的是,这个类不是*动态的,因为必须给定最大大小(就像数组中一样)。如果地图的大小被充分超过,它将是相当昂贵的,所以这就是为什么总是给一个大的最大尺寸是一个好主意。(比一个简单的错误还便宜!)

IdentityHashMap:实现和扩展的内容。

IdentityHashMap中的构造函数

IdentityHashMap():创建一个默认最大大小为21的新标识哈希映射。

IndetityHashMap(int expectedMaxSize):创建具有预期最大大小的新空映射。

识别地图(地图<?扩展K?extends V>m):创建一个包含与指定映射相同映射的新标识has map。

IdentityHashMap中的方法

void clear():删除此映射中的所有映射。

Object clone():返回此标识哈希映射的副本(请注意,键和值本身不会被克隆)。

boolean containsKey(Object key):如果映射包含指定的键,则返回true,否则返回false。

boolean containsValue(Object value):如果映射包含指定的值,则返回true,否则返回false。

boolean equals(Object o):比较指定对象与此映射的相等性。

V get(Object key):返回指定键映射到的值,如果映射不包含到该键的映射,则返回null。

int hashCode():返回此映射的哈希代码值。

boolean isEmpty():如果映射为空,则返回true;否则返回false。

V put(K key,V value):将指定值与映射中的指定键相关联。

V remove(Object key):移除映射到映射中指定键的映射(如果存在)。

int size():返回此标识哈希映射中的键值映射数。

有关所有方法的文档,可以访问Oracle官方文档页。

使用上述大多数方法的程序示例:

import java.util.Map; 
import java.util.HashMap; 
import java.util.IdentityHashMap; 

public class IdentityHashMapExample  
{ 
  public static void main(String[] args)  
  { 
      Map identityHashMap = new IdentityHashMap(); 

      identityHashMap.put("key", "value");  
      System.out.println("Size of IdentityHashMap: " + identityHashMap.size());  

      identityHashMap.put("key1", "value1");
      System.out.println("Size of IdentityHashMap: " + identityHashMap.size());  

      System.out.println("Does it contain key 'key1': " + identityHashMap.containsKey("key1"));

      System.out.println("Value of key 'key1': " + identityHashMap.get("key1"));

      System.out.println("Size of map before clear: " + identityHashMap.size());

      identityHashMap.clear();

      System.out.println("Size of map after clear: " + identityHashMap.size());
  } 
}

输出

Size of IdentityHashMap: 1
Size of IdentityHashMap: 2
Does it contain key 'key1': true
Value of key 'key1': value1
Size of map before clear: 2
Size of map after clear: 0