Java 中的 HashMap

Java 中的 HashMap 是什么?

HashMap 主要将唯一的键与相应的相关联,这些值可以在任何给定时间被检索。

HashMap in Java

Java HashMap 的特性

a) 可以通过形成键值对来存储在映射中。可以通过键传递给正确的方法来检索值。

b) 如果映射中不存在元素,它将抛出“NoSuchElementException”。

c) HashMap 只存储对象引用。这就是为什么无法使用 原始数据类型,如 double 或 int。请改用包装类(如 Integer 或 Double)。

Features of Java Hashmap

在 Java 程序中使用 HashMap

声明 HashMap 的两种方法如下:

HashMap<String, Object> map = new HashMap<String, Object>();
HashMap x  = new HashMap();

重要的 HashMap 方法

  • get(Object KEY) – 此方法将返回 Java hashmap 中与指定键关联的值。
  • put(Object KEY, String VALUE) – 此方法将指定的键值存储并与之关联在此映射中。

Java HashMap 示例

以下是 Java HashMap 的一个示例实现

import java.util.HashMap;
import java.util.Map;
public class Sample_TestMaps{
  public static void main(String[] args){
    Map<String, String> objMap = new HashMap<String, String>();
    objMap.put("Name", "Suzuki");
    objMap.put("Power", "220");
    objMap.put("Type", "2-wheeler");
    objMap.put("Price", "85000");
    System.out.println("Elements of the Map:");
    System.out.println(objMap);
  }
}

输出

Elements of the Map:
{Type=2-wheeler, Price=85000, Power=220, Name=Suzuki}

示例:根据键从 HashMap 中移除值

import java.util.*;  
public class HashMapExample {  
   public static void main(String args[]) {  
   // create and populate hash map  
   HashMap<Integer, String> map = new HashMap<Integer, String>();           
   map.put(1,"Java");  
   map.put(2, "Python");  
   map.put(3, "PHP");  
   map.put(4, "SQL");
   map.put(5, "C++");
   System.out.println("Tutorial in Guru99: "+ map);    
   // Remove value of key 5  
   map.remove(5);  
   System.out.println("Tutorial in Guru99 After Remove: "+ map);
   }
}

输出

Tutorial in Guru99: {1=Java, 2=Python, 3=PHP, 4=SQL, 5=C++}
Tutorial in Guru99 After Remove: {1=Java, 2=Python, 3=PHP, 4=SQL}

让我们向 HashMap 本身提出一些问题,以便更好地了解它

问:那么,Hash Map 先生,我如何知道您是否为某个特定键分配了值?

答:太棒了,您可以使用 containsKey(Object KEY) 方法,如果我有给定的键的值,它将返回一个布尔值。

问:我如何找到 Map 中存在的所有可用键?

答:我有一个名为 **keySet**() 的方法,它将返回 Map 中的所有键。在上面的示例中,如果您写一行:
System.out.println(objMap.keySet());

输出将是:
[Name, Type, Power, Price]

同样,如果您只需要所有值,我有一个 **values**() 方法。
System.out.println(objMap.values());

输出将是:
[Suzuki, 2-wheeler, 220, 85000]

问:假设我想从 Map 中只删除一个特定的键,我需要删除整个 Map 吗?

答:不,朋友!我有一个 **remove**(Object KEY) 方法,它只会删除那个特定的键值对。

问:我们如何检查您是否真的包含某些键值对?

答:只需检查我是否为空!简而言之,请使用 **isEmpty**() 方法。