Java HashMap的底层是哈希表,它是一个数组,每个数组元素是一个链表。当调用put(key, value)
方法时,HashMap会计算key的哈希值,然后将其映射到数组的一个位置。如果有多个键映射到同一个位置,它们会存储在一个链表中。当需要获取一个值时,HashMap会再次计算键的哈希值,找到对应的数组位置,然后遍历链表以找到正确的键,并返回相应的值。
HashMap的扩容机制也很重要,当HashMap中的元素数量超过阈值(load factor
乘以capacity
)时,它会创建一个更大的数组,并将所有现有的键值对重新映射到新的数组中。
以下是一个简单的示例,展示了如何使用HashMap:
import java.util.HashMap;public class HashMapExample {public static void main(String[] args) {// 创建一个HashMap实例HashMap<Integer, String> map = new HashMap<>();// 添加键值对map.put(1, "Apple");map.put(2, "Banana");map.put(3, "Cherry");// 获取并打印值System.out.println(map.get(1)); // 输出: AppleSystem.out.println(map.get(2)); // 输出: BananaSystem.out.println(map.get(3)); // 输出: Cherry// 检查键是否存在System.out.println(map.containsKey(2)); // 输出: true// 删除键值对map.remove(1);// 检查值是否存在System.out.println(map.containsValue("Apple")); // 输出: false// 获取HashMap大小System.out.println(map.size()); // 输出: 2// 遍历HashMapfor (Integer key : map.keySet()) {System.out.println(key + ": " + map.get(key));}}
}
以上代码展示了HashMap的基本用法,包括添加元素、获取元素、检查键和值的存在、删除元素、获取大小和遍历。