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.