java - ArrayList 的 ArrayList,默认值

标签 java arraylist

我是 Java 的初学者,我正在尝试创建一个 ArrayList 来存储包含整数的 ArrayList。我已经知道我想要的外部 ArrayList 的大小并且想要存储内部 ArrayList。例如,我想将所有狗 ID 号添加到存储在外部 ArrayList 的第一个索引中的 ArrayList,第二个索引中的猫 ID 号,第三个中的蜥蜴 ID 号。这将以随机顺序发生,所以我想要外部 ArrayList 的大小已经初始化,因此当我遇到它时,我可以将 ID 号发送到它的正确内部列表。这就是我所做的:

ArrayList<ArrayList<Integer>> outer = new ArrayList<ArrayList<Integer>>(capacity);
ArrayList<Integer> inner = new ArrayList<Integer>(); 
    for (int i = 0; i < capacity; i++) {
        outer.add(null);
    }   

将这些索引初始化为 null 会将大小增加到存储在 capacity 中的任何数字,并允许我稍后通过执行 outer.get(3).add( 10) 然后 outer.get(0).add(22)?

我也想过这样做:

ArrayList<ArrayList<Integer>> outer = new ArrayList<ArrayList<Integer>>(capacity);
ArrayList<Integer> inner = new ArrayList<Integer>(); 
    for (int i = 0; i < capacity; i++) {
        outer.add(inner);
    }   

但不知道添加 inner 是否真的会将 outer 中的所有索引初始化为 Integer ArrayLists,或者它们是否会引用“inner”变量本身或类似的东西。

最佳答案

ArrayListsize(元素个数)和capacity(需要自动扩容前它能容纳的元素个数)可用于优化,现在您可以安全地忽略 capacity 并仅根据您的需要添加和删除元素。

创建外部数组:

ArrayList<ArrayList<Integer>> outer = new ArrayList<>();

然后添加你需要的所有内部数组:

for (int i = 0; i < capacity; i++) {
    outer.add(new ArrayList<Integer>());
}   

关于java - ArrayList 的 ArrayList,默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49355128/

相关文章:

c# - 如果列表中包含特定文本,则从列表中删除该元素

java - 用于大型 Java EE 应用程序的 MVC 框架

java - 用于读取 HDf5 错误的 Netcdf java 库

java - 插入 HashMap 会更改其他存储的 HashMap 中的值

java - Eclipse 将用户库(带有 Hibernate jar)创建到项目中作为系统库

java - 序列化和加密 ArrayList 对象时出现 StreamCorruptedException

Java/Android Arraylist 给出地址

java - 为什么最后一个对象在 ArrayList 中被复制多次?

java - 迭代对象的 ArrayList 并打印每个对象的每个变量

java - 调试 AsyncTask