Java 中的 HashMap
Java 中的 HashMap 是什么?
HashMap 主要将唯一的键与相应的值相关联,这些值可以在任何给定时间被检索。
Java HashMap 的特性
a) 值可以通过形成键值对来存储在映射中。可以通过键传递给正确的方法来检索值。
b) 如果映射中不存在元素,它将抛出“NoSuchElementException”。
c) HashMap 只存储对象引用。这就是为什么无法使用 原始数据类型,如 double 或 int。请改用包装类(如 Integer 或 Double)。
在 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**() 方法。