当前位置: 首页 > 知识库问答 >
问题:

ArrayList的ArrayList,默认值

袁文景
2023-03-14

我是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会将大小增加到容量中存储的任何数字,并允许我稍后通过执行outer.get(3).add(10)outer.get(0).add(22)向内部添加一个dog吗?

我也想过这样做:

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中的所有索引初始化为整数ArrayLists,或者它们是否会引用“inner”变量本身或类似的东西。

共有1个答案

堵琨
2023-03-14

ArrayList具有大小(元素数)和容量(在需要自动展开之前可以容纳的元素数),这些可以用于优化,现在您可以安全地忽略容量,只需根据需要添加和删除元素。

使用以下命令创建外部数组:

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

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

for (int i = 0; i < capacity; i++) {
    outer.add(new ArrayList<Integer>());
}   
 类似资料:
  • 问题内容: 以下代码输出 但是,我期望的是 我哪里错了? 问题答案: 您将两次向同一内部引用添加到外部列表。因此,当您更改内部列表时(通过添加300),您会在“两个”内部列表中看到它(实际上,只有一个内部列表,外部列表中存储了两个引用)。 为了获得理想的结果,您应该创建一个新的内部列表:

  • 问题内容: 我看到了ArrayList的Java文档,发现ArrayList的初始容量为10。 我认为这是2的幂是有道理的,但为什么是10? 我还检查了HashMap的初始容量,这是16,这很有意义。 数字10后面是否有具体原因? 问题答案: 这是简单的增长数组。当尝试添加元素并且超出缓冲区大小时,它只是在增长。因此,初始大小可以是任何正值。 1将太少。即使有一些元素,我们也会有一些调整大小的操作

  • 我是Java新手,目前正在为一个项目使用BlueJ。我在访问此类对象的ArrayList的ArrayList中的对象时遇到问题。假设我有一个学生对象: 然后是获取地址、月份、年份和等级的方法。然后我有一个类,它是学生对象的数组列表: 这个类包括添加学生对象、列出类中的所有学生(ListallStudentsInClass)的方法,该类返回学生的ArrayList、查找类中成绩最高的学生(getHi

  • 我有一个ArrayList of String。 在每个索引上的外部ArrayList中,每个内部ArrayList有四个项目,有四个参数。 联系人ID 联系人姓名 联系地址 联系号码 现在,我想根据Contact Name参数对的完整ArrayList进行排序。 意味着我要访问外部Arraylist,外部Arraylist的每个索引上存在的内部Arraylist应该根据联系人名称进行排序。 比较

  • 问题内容: 在常规数组列表初始化中,我们习惯于如下定义泛型类型, 但是,如果是ArrayLists的ArrayList,我们如何定义其通用类型? 数组列表的数组列表代码如下: 只需共享语法,如果有人对此有想法。 问题答案: 你可以做 如果您需要一个列表数组,可以执行 并安全地忽略或禁止该警告。

  • 有人能告诉我我在这个问题上做错了什么吗,我似乎不能生成最后一部分。ArrayList arr=new ArrayList();不应该与arr[b]工作的最后一部分运行相同吗?我是新来的Java所以如果简单的解释/隐喻能提供解决方案,我会非常感激。 P、 S:我不打算使用像Collection这样的库排序功能,我需要使用最后一部分中的排序方法。