Java 集合框架:HashMap 的介绍、使用、原理与源码解析
HashMap 是 Java 集合框架中非常常用的一个类,它实现了 Map 接口,用于存储键值对。HashMap 的特点如下:
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map<String , Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3 );
// 获取值
int value = map.get("apple");
System.out.println(value); // 输出:1
// 判断是否包含某个键
boolean containsKey = map.containsKey("pear");
System.out.println(containsKey); // 输出:false
// 遍历 HashMap
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
HashMap 的底层实现是数组+链表+红黑树。
工作流程:
HashMap 的源码比较复杂,这里只简单介绍几个关键点:
关键源码片段:
Java
public V put(K key, V value) {
// ...
int hash = hash(key);
int i = indexFor(hash, table.length);
for (Node<K,V> e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == ke y || (key != null && key.equals(k)))) {
V oldValue = e.value;
e.value = value;
retur n oldValue;
}
}
// ...
}
HashMap 是 Java 集合框架中非常重要的一员,它提供了高效的键值对存储和查找功能。了解 HashMap 的原理和源码有助于我们更好地使用 HashMap,并编写出更高质量的代码。
更多深入学习的内容可以参考以下方面:
希望这篇回答能对你有所帮助!
如果你还有其他问题,欢迎随时提出。
想深入了解哪些方面呢? 比如:
请告诉我你的需求,我会尽力解答。