You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建值为ArrayList<ArrayList<Integer>>的HashMap并正确添加元素

嵌套泛型HashMap赋值解决方案

报错根因

你声明的HashMap值类型为ArrayList<ArrayList<Integer>>,是两层嵌套的整数列表结构,而你从用户侧拿到的输入是单层ArrayList<Integer>,二者类型不匹配,直接传入构造器必然触发类型不兼容报错。

正确写入方式

场景1:逐次拿到用户输入的单层列表,合并为同一个key的value

如果你的用户每次输入的是嵌套列表中的单个子列表(比如key=1对应的[1,2,5]、[4,5]分两次输入),写法如下:

// i为目标key,userInput为用户输入的单层ArrayList<Integer>
// 先判断key是否存在,不存在则初始化对应的外层列表
if (!map.containsKey(i)) {
    map.put(i, new ArrayList<>());
}
// 将用户输入的单层列表加入外层列表
map.get(i).add(userInput);

对应你给出的示例数据,写入key=1的完整示例:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

// 你的Map声明
HashMap<Integer,ArrayList<ArrayList<Integer>>> map = new HashMap<>();

// 模拟两次用户输入
ArrayList<Integer> userInput1 = new ArrayList<>(Arrays.asList(1,2,5));
ArrayList<Integer> userInput2 = new ArrayList<>(Arrays.asList(4,5));

int key = 1;
if (!map.containsKey(key)) {
    map.put(key, new ArrayList<>());
}
map.get(key).add(userInput1);
map.get(key).add(userInput2);

场景2:一次性拿到完整的两层嵌套列表输入

如果用户侧输入本身就是ArrayList<ArrayList<Integer>>类型,直接写入即可,需要避免后续修改用户输入影响Map内的值可以做一层浅拷贝:

// userInput为用户输入的两层嵌套列表ArrayList<ArrayList<Integer>>
map.put(i, new ArrayList<>(userInput));

内容的提问来源于stack exchange,提问作者user10183910

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:45:03