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

put()-向HashMap插入键值对

发布时间:2023-06-26 10:54:43

HashMap是Java中最常用的数据结构之一,它是一个由键值对组成的集合,而且插入和访问数据的时间复杂度都是O(1),使得它被广泛应用于各种领域。

在HashMap中,put()方法是向Map中插入键值对的方法,它的语法如下:

public V put(K key, V value)

该方法接收两个参数,第一个参数是键,第二个参数是值,返回值是V类型的值,表示该键上原来的值(如果有)。

当我们向HashMap中插入键值对时,HashMap会根据键的哈希值将其存储在一个桶(bucket)中,每个桶都是由链表或红黑树实现的,如果桶中已经有一个键,那么就会将新的值更新在原有键的值上,否则就会在该桶的链表或红黑树上添加一个新节点。

在了解了put()方法的基本语法和原理后,我们一起来看看如何使用put()方法向HashMap中插入键值对。

示例:

import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
    public static void main(String[] args) {
        //创建一个HashMap实例
        Map<String, Integer> map = new HashMap<>();

        //添加键值对
        map.put("apple", 10);
        map.put("banana", 20);
        map.put("orange", 30);

        //输出所有键值对
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " - " + entry.getValue());
        }
    }
}

在这个例子中,我们首先创建了一个HashMap实例,并使用put()方法向其中插入三个键值对,然后使用foreach循环输出所有的键值对。

输出结果如下:

orange - 30
banana - 20
apple - 10

可以看到,HashMap并不保证插入顺序和输出顺序相同,因为它是根据键值的哈希值来进行排序的。

需要注意的是,当我们向HashMap中插入键值对时,如果键已经存在,那么新的值会覆盖原有值,例如:

import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
    public static void main(String[] args) {
        //创建一个HashMap实例
        Map<String, Integer> map = new HashMap<>();

        //添加键值对
        map.put("apple", 10);
        map.put("banana", 20);
        map.put("orange", 30);
        map.put("apple", 40);

        //输出所有键值对
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " - " + entry.getValue());
        }
    }
}

在这个例子中,我们向HashMap中插入了四个键值对,其中"apple"这个键出现了两次,但是第二次插入时,它将原有的值10替换成了新的值40。

输出结果如下:

orange - 30
banana - 20
apple - 40

除了上面提到的用法外,put()方法还可以有其他的应用场景。

例如,我们可以使用put()方法来计算一个字符串中每个字符出现的次数,代码如下:

import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
    public static void main(String[] args) {
        String str = "aabbcccdddeeeeffffggggghhhhhiiiiijjjjjkkkkk";

        Map<Character, Integer> map = new HashMap<>();
        for (char c : str.toCharArray()) {
            if (!map.containsKey(c)) {
                map.put(c, 1);
            } else {
                map.put(c, map.get(c) + 1);
            }
        }

        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " - " + entry.getValue());
        }
    }
}

在这个例子中,我们统计了一个字符串中每个字符出现的次数。

首先,我们创建了一个空的HashMap实例,然后遍历字符串中的每个字符,如果该字符没有在Map中出现过,就将它加入Map中,并将计数器初始化为1;否则,就将该字符原有的计数器加1。最后,我们遍历Map中的所有键值对,输出字符和出现次数。

输出结果如下:

g - 5
h - 5
e - 4
d - 3
c - 3
j - 5
i - 5
b - 2
k - 5
f - 4
a - 2

总结:

put()方法是使用HashMap时最为常用的方法之一,它可以向Map中插入键值对,并支持添加和覆盖操作。通过实例代码的演示,我们可以发现put()方法还可以用来统计字符串中每个字符的出现次数,灵活地应用在各种场景中。