首页 > 解决方案 > 使用循环将元素添加到 ArrayList 并在控制台上输出它们

问题描述

我知道这是一个基本问题,但我已经挣扎了很多天,找不到解决方案。拜托,任何建议将不胜感激。

我只是想将现有 ArrayList 中包含的元素(节点对象)添加到新的空 ArrayList。这个想法是,如果我可以一次添加一个元素,我可以在 1 个元素的列表上运行堆排序方法,然后在 2 个元素的列表上,然后在 3 个元素的列表上运行,等等。

但是,当使用 for 循环、while 循环,甚至增强的 for 循环时,我无法成功添加元素并输出它们的结果值或它们的顺序。当我按如下方式手动添加它们时,它似乎可以工作:

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

test_list.add(0, 5);
test_list.add(1,10);
test_list.add(2, 15);
test_list.add(3, 20);
test_list.add(4, 25);

for (Integer num : test_list){      
System.out.println("output testing output testing" + num);
}

但是,当我尝试使用循环添加它们时,如下所示:

for (int i = 0; i<test_list.size()-1; i++)
{
    test_list.add(i, i*5);
    System.out.println(test_list.get(i));
}

不起作用!我查看了 ArrayList 的 API 并查看了 stackoverflow 问题,根据我收集的信息,'.set(index, element)' 方法不适用于空列表,但是 '.add(index , element)' 应该可以工作,但我不知道为什么它不工作。

标签: javaloopsarraylist

解决方案


问题是您的数组列表在开始添加之前是空的(大小 = 0);所以你的循环是空的。

增强的 for 循环也将不起作用,因为列表首先没有项目。

当您手动添加它们时,您成功地将项目添加到列表中,因为您不依赖于列表的大小。

使用中的替代实现Mert Ozdal's answer


推荐阅读