HashMap
是 Java 中的一种集合类,它实现了 Map
接口,用于存储键值对(key-value pairs)。每个键在 HashMap
中是唯一的,可以快速地根据键来查找对应的值。
ArrayList
是 Java 中的另一种集合类,实现了 List
接口,用于存储一系列的元素,并且允许重复的元素。ArrayList
提供了按索引访问元素的能力,并且支持动态增长。
null
作为键(只能有一个)和值。HashMap
是一种键值对集合。ArrayList
是一种线性数据结构,用于存储元素的列表。HashMap
适用于需要快速查找、插入和删除操作的场景,例如缓存、数据库索引等。ArrayList
适用于需要按顺序访问元素的场景,例如程序中需要维护一个元素列表时。假设我们有一个 ArrayList
存储了一些字符串,我们想要将这些字符串作为值,以它们在列表中的索引作为键,存入一个 HashMap
中。
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// 创建 ArrayList 并添加一些值
ArrayList<String> list = new ArrayList<>();
list.add("Value1");
list.add("Value2");
list.add("Value3");
// 创建 HashMap 用于存储键值对
HashMap<Integer, String> map = new HashMap<>();
// 遍历 ArrayList 并将值添加到 HashMap 中
for (int i = 0; i < list.size(); i++) {
map.put(i, list.get(i));
}
// 打印 HashMap 的内容
for (HashMap.Entry<Integer, String> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
问题: 如果 ArrayList
中有 null
值,向 HashMap
添加时会怎样?
原因: HashMap
允许使用 null
作为值,但不允许使用 null
作为键。
解决方法: 在添加之前检查 ArrayList
中的值是否为 null
,如果是,则可以选择跳过或者以某种方式处理。
for (int i = 0; i < list.size(); i++) {
if (list.get(i) != null) {
map.put(i, list.get(i));
}
}
问题: 如果 ArrayList
的大小非常大,添加操作可能会很慢。
原因: 随着 HashMap
的大小增加,内部结构可能需要重新调整,这是一个相对耗时的操作。
解决方法: 如果预先知道 ArrayList
的大小,可以在创建 HashMap
时指定初始容量,以减少重新调整结构的次数。
HashMap<Integer, String> map = new HashMap<>(list.size());
Elastic 实战工作坊
Elastic 实战工作坊
云+社区技术沙龙[第29期]
高校公开课
TAIC
开箱吧腾讯云
开箱吧腾讯云
云原生正发声
云+社区开发者大会 长沙站
云+社区技术沙龙[第28期]
云+社区技术沙龙[第12期]
领取专属 10元无门槛券
手把手带您无忧上云