Java-identityhashmap-class

提供:Dev Guides
移動先:案内検索

Java-IdentityHashMapクラス

このクラスは、AbstractMapを実装します。 HashMapと似ていますが、要素を比較するときに参照の等価性を使用する点が異なります。

このクラスは、汎用のMap実装ではありません。 このクラスはMapインターフェースを実装しますが、オブジェクトの比較時にequalsメソッドの使用を義務付けているMapの一般契約に意図的に違反します。

このクラスは、参照平等セマンティクスが必要なまれなケースでのみ使用するように設計されています。 このクラスは、システムアイデンティティハッシュ関数(System.identityHashCode(Object))がバケット間で要素を適切に分散すると仮定して、基本操作(getおよびput)に一定時間のパフォーマンスを提供します。

このクラスには、1つのチューニングパラメーター(パフォーマンスに影響しますが、セマンティクスには影響しません)があります:予想最大サイズ このパラメーターは、マップが保持することが期待されるキーと値のマッピングの最大数です。

以下は、IdentityHashMapでサポートされるコンストラクターのリストです。

Sr.No. Constructor & Description
1

IdentityHashMap()

このコンストラクターは、デフォルトの予想最大サイズ(21)で、新しい空のIDハッシュマップを作成します。

2

IdentityHashMap(int expectedMaxSize)

このコンストラクタは、指定された予想最大サイズで新しい空のIdentityHashMapを構築します。

3

IdentityHashMap(Map m)

このコンストラクタは、指定されたマップのキーと値のマッピングを含む新しいアイデンティティハッシュマップを作成します。

親クラスから継承されたメソッドとは別に、IdentityHashMapは次のメソッドを定義します-

Sr.No. Method & Description
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()

このマップに含まれるキーのIDベースのセットビューを返します。

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