赞
踩
HashMap
是 Java 集合框架中的一个核心类,它实现了 Map
接口。HashMap
存储键值对(key-value pairs)并允许你使用键来检索值。与 TreeMap
不同,HashMap
不保证映射的顺序,特别是它不保证顺序会随着时间的推移而保持不变。
以下是关于 HashMap
类的一些关键点:
性能:HashMap
基于哈希表实现,提供了几乎常量的时间复杂度来执行 get
和 put
操作(假设哈希函数是均匀的,并且表有足够的容量)。
非同步:HashMap
不是线程安全的。如果你打算在多线程环境中使用它,你需要额外的同步措施,或者可以考虑使用 Collections.synchronizedMap()
方法来包装它,或者使用 ConcurrentHashMap
类。
容量和负载因子:HashMap
有一个初始容量(默认为 16)和一个负载因子(默认为 0.75)。当哈希表中的条目数超过容量与负载因子的乘积时,哈希表会重新调整大小(rehash)。
键的唯一性:在 HashMap
中,键(key)必须是唯一的,并且不能为 null
(但在 Java 8 及更高版本中,HashMap
允许一个 null
键)。值(value)可以是重复的,并且可以为 null
。
遍历:HashMap
提供了多种方法来遍历它的键、值或键值对,如 keySet()
、values()
和 entrySet()
方法。
迭代顺序:从 Java 1.8 开始,HashMap
在迭代时遵循键的插入顺序(但这并不意味着 HashMap
是有序的或保证顺序的稳定性)。如果在迭代期间对映射进行了修改(结构修改,如添加或删除元素),则迭代可能会抛出 ConcurrentModificationException
。
下面是一个简单的示例,展示了如何使用 HashMap
类:
import java.util.HashMap; import java.util.Map; public class HashMapExample { public static void main(String[] args) { // 创建一个HashMap实例 HashMap<String, Integer> hashMap = new HashMap<>(); // 添加元素 hashMap.put("One", 1); hashMap.put("Two", 2); hashMap.put("Three", 3); // 检索元素 Integer value = hashMap.get("Two"); System.out.println("Value for 'Two': " + value); // 遍历HashMap for (Map.Entry<String, Integer> entry : hashMap.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } // 移除元素 hashMap.remove("One"); // 检查元素是否存在 boolean containsKey = hashMap.containsKey("One"); System.out.println("'One' exists in the map: " + containsKey); } }
在上面的示例中,我们创建了一个 HashMap
实例,并添加、检索、遍历和删除了几个键值对。还展示了如何使用 containsKey
方法来检查某个键是否存在于映射中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。