put()-向HashMap插入键值对
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()方法还可以用来统计字符串中每个字符的出现次数,灵活地应用在各种场景中。
