HashMap是Java中一种常用数据结构,它实现了Map接口,提供了一种基于哈希表的键值对存储方式。
底层数据结构:数组+链表或红黑树(链表长度超过8时)。
初始容量和加载因子:HashMap默认的初始容量是16,加载因子是0.75。
线程安全:HashMap是非线程安全的,如果多个线程同时访问并修改HashMap,
可能会导致数据不一致。
解决方法:可以使用Collections.synchronizedMap()来将HashMap转换为线程安全
的版本或者使用ConcurrentHashMap。
存储键的要求:
- HashMap中的键需要实现hashCode()和equals()方法,以确保键的唯一性和正确的哈希定位;
- 允许使用null作为键或值。
迭代:HashMap提供了keySet(),values(),和entrySet()方法来获取键、值和键值对的视图,支持迭代。
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
// 添加元素
map.put("Alice", 23);
map.put("Bob", 30);
// 获取元素
System.out.println("Alice's age: " + map.get("Alice"));
// 遍历元素
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
// 移除元素
map.remove("Bob");
}
}