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

Java初学者求助:如何初始化指定大小的嵌套ArrayList存储不同ID

解决方案:初始化嵌套ArrayList并按类型存储ID

嘿,作为Java初学者,你的需求很清晰——要一个外层ArrayList来分别存不同宠物的ID,而且得预先准备好位置,不管ID过来的顺序如何都能直接对应存入。这其实很容易实现,我来一步步给你讲:

第一步:初始化外层ArrayList并填充空的子列表

首先得明确:Java的ArrayList构造器里的数字是初始容量,不是固定大小。也就是说,new ArrayList<>(3)只是给外层列表预分配了能装3个元素的空间,但它的实际size()还是0。所以你需要手动往外层列表里添加3个空的ArrayList<Integer>,这样每个宠物类型就有对应的索引位置了:

// 外层列表,初始容量设为3(可选,但能提升效率)
ArrayList<ArrayList<Integer>> petIdLists = new ArrayList<>(3);

// 为每个宠物类型添加空的子列表:索引0=狗,1=猫,2=蜥蜴
petIdLists.add(new ArrayList<>());
petIdLists.add(new ArrayList<>());
petIdLists.add(new ArrayList<>());

第二步:按类型存入ID

现在不管ID的顺序是什么,你只要判断这个ID属于哪种宠物,就往对应的索引位置的子列表里加就行。比如:

// 假设随机拿到的ID和宠物类型
int randomId = 123;
String petType = "狗"; // 也可能是"猫"或"蜥蜴"

// 根据类型存入对应列表
switch(petType) {
    case "狗":
        petIdLists.get(0).add(randomId);
        break;
    case "猫":
        petIdLists.get(1).add(randomId);
        break;
    case "蜥蜴":
        petIdLists.get(2).add(randomId);
        break;
    default:
        // 处理未知类型的情况
        System.out.println("未知宠物类型:" + petType);
}

可选优化:用枚举提升可读性

如果怕记混索引(比如哪天忘了索引0是狗还是猫),可以用枚举来对应宠物类型,代码会更清晰,也不容易出错:

// 定义宠物类型枚举
enum PetType {
    DOG, CAT, LIZARD
}

// 存入的时候用枚举的ordinal()获取对应索引
int id = 456;
PetType type = PetType.CAT;
petIdLists.get(type.ordinal()).add(id);

注意事项

  • 千万不要直接用petIdLists.get(0)如果外层列表里还没添加子列表,那样会抛出IndexOutOfBoundsException,所以必须先把3个空的子列表都加进去才能通过索引访问。
  • 子列表本身是动态的,你可以往里面加任意数量的ID,ArrayList会自动扩容,不用手动处理容量问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:08:24