Java HashMap 类



简介

Java HashMap 类是 Map 接口基于哈希表的实现。以下是关于 HashMap 的重要要点:

  • 此类不保证映射的迭代顺序;特别是,它不保证顺序会随着时间的推移保持不变。

  • 此类允许 null 值和 null 键。

类声明

以下是 java.util.HashMap 类的声明:

public class HashMap<K,V>
   extends AbstractMap<K,V>
   implements Map<K,V>, Cloneable, Serializable

参数

以下是 java.util.HashMap 类的参数:

  • K - 此映射维护的键的类型。

  • V - 映射值的类型。

类构造函数

序号 构造函数 & 描述
1

HashMap()

使用默认初始容量 (16) 和默认负载因子 (0.75) 构造一个空的 HashMap。

2

HashMap(int initialCapacity)

使用指定的初始容量和默认负载因子 (0.75) 构造一个空的 HashMap。

3

HashMap(int initialCapacity, float loadFactor)

使用指定的初始容量和负载因子构造一个空的 HashMap。

4

HashMap(Map<? extends K,? extends V> m)

使用与指定 Map 相同的映射构造一个新的 HashMap。

类方法

序号 方法 & 描述
1 void clear()

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

2 Object clone()

此方法返回此 HashMap 实例的浅拷贝,键和值本身不会被克隆。

3 V compute​(K key, BiFunction<? super K,​? super V,​? extends V> remappingFunction)

尝试为指定的键及其当前映射值(如果当前没有映射则为 null)计算映射。

4 V computeIfAbsent​(K key, Function<? super K,​? extends V> mappingFunction)

如果指定的键尚未与值关联(或映射到 null),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非为 null。

5 V computeIfPresent​(K key, BiFunction<? super K,​? super V,​? extends V> remappingFunction)

如果指定键的值存在且不为 null,则尝试根据键及其当前映射值计算新的映射。

6 boolean containsKey(Object key)

此方法如果此映射包含指定键的映射,则返回 true。

7 boolean containsValue(Object value)

此方法如果此映射将一个或多个键映射到指定值,则返回 true。

8 Set<Map.Entry<K,V>> entrySet()

此方法返回此映射中包含的映射的 Set 视图。

9 V get(Object key)

此方法返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。

10 boolean isEmpty()

此方法如果此映射不包含任何键值映射,则返回 true。

11 Set<K> keySet()

此方法返回此映射中包含的键的 Set 视图。

12 V merge​(K key, V value, BiFunction<? super V,​? super V,​? extends V> remappingFunction)

如果指定的键尚未与值关联或与 null 关联,则将其与给定的非 null 值关联。

13 V put(K key, V value)

此方法将指定的值与此映射中的指定键关联。

14 void putAll(Map<? extends K,? extends V> m)

此方法将指定映射中的所有映射复制到此映射。

15 V remove(Object key)

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

16 int size()

此方法返回此映射中键值映射的数量。

17 Collection<V> values()

此方法返回此映射中包含的值的 Collection 视图。

继承的方法

此类继承自以下类的方法:

  • java.util.AbstractMap
  • java.util.Object
  • java.util.Map

示例

以下程序说明了 HashMap 集合支持的几种方法:

import java.util.*;
public class HashMapDemo {

   public static void main(String args[]) {
   
      // Create a hash map
      HashMap hm = new HashMap();
      
      // Put elements to the map
      hm.put("Zara", new Double(3434.34));
      hm.put("Mahnaz", new Double(123.22));
      hm.put("Ayan", new Double(1378.00));
      hm.put("Daisy", new Double(99.22));
      hm.put("Qadir", new Double(-19.08));
      
      // Get a set of the entries
      Set set = hm.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)hm.get("Zara")).doubleValue();
      hm.put("Zara", new Double(balance + 1000));
      System.out.println("Zara's new balance: " + hm.get("Zara"));
   }
}

这将产生以下结果:

输出

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

Zara's new balance: 4434.34
广告