欢迎访问宙启技术站
智能推送

put()方法将键值对存储到HashMap中

发布时间:2023-05-30 06:09:01

HashMap是Java中的一个重要集合类,它实现了Map接口,可以用来实现键值对的存储。HashMap使用了哈希表的数据结构,通过将键值对映射到不同的桶(bucket)中,来实现快速的查找和插入操作。

其中,put()方法就是用来存储键值对的方法,它具有以下特点:

1. 存储键值对

put()方法可以将指定的键值对存储到HashMap中,其中键值对以(key, value)的形式传入。这里的key表示需要存储的键,value表示需要存储的值,它们都可以是任意的非空对象。

2. 可以存储重复的键

HashMap中允许存储重复的键,当存储新的键值对时,如果键已经存在,则会覆盖原来的值。这里的重复是基于equals()方法来比较的,也就是说,如果两个键的equals()方法返回true,则认为它们是相等的。

3. 返回旧值

当存储新的键值对时,如果键已经存在,则会返回原来的值。这可以方便我们在修改已存在的键值对时,获得原来的值进行处理。如果原来的值为空,则返回null。

4. 扩容机制

当HashMap中的元素数量超过了负载因子(load factor)和容量(initial capacity)的乘积时,就会发生扩容操作,这里的负载因子默认为0.75。扩容操作会新建一个容量为原来的两倍的HashMap,并将原来的元素重新散列到新的桶中。这样,可以提高HashMap的查询和插入效率,减少哈希冲突的概率。

5. 存储顺序不确定

HashMap中键值对的存储顺序是不确定的,取决于桶的散列情况和元素的插入顺序。这意味着,遍历HashMap时,元素的顺序并不是按照插入顺序排列的。

以下是put()方法的示例代码:

    // 创建一个新的HashMap对象
    HashMap<Integer, String> map = new HashMap<>();

    // 存储键值对
    map.put(1, "apple");
    map.put(2, "banana");
    map.put(3, "orange");
    map.put(4, "pineapple");

    // 输出HashMap中的元素数量
    System.out.println("Size of map after initial insertions: " + map.size());

    // 存储重复的键
    String oldValue = map.put(1, "pear");
    System.out.println("Old value for key 1: " + oldValue);

    // 输出修改后的键值对
    System.out.println("Updated map: " + map);

    // 遍历HashMap
    System.out.println("Looping through HashMap:");
    for (Integer key : map.keySet()) {
        System.out.println(key + ": " + map.get(key));
    }

输出结果如下:

Size of map after initial insertions: 4
Old value for key 1: apple
Updated map: {1=pear, 2=banana, 3=orange, 4=pineapple}
Looping through HashMap:
1: pear
2: banana
3: orange
4: pineapple

从上面的代码和输出结果可以看出,put()方法可以实现键值对的存储,并支持存储重复的键和返回旧值操作。同时,HashMap中的元素顺序是不确定的,因此在遍历HashMap时要特别注意。