java - 使用循环将元素添加到 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)' 应该可以工作,但我不知道为什么它不工作。
解决方案
问题是您的数组列表在开始添加之前是空的(大小 = 0);所以你的循环是空的。
增强的 for 循环也将不起作用,因为列表首先没有项目。
当您手动添加它们时,您成功地将项目添加到列表中,因为您不依赖于列表的大小。
使用中的替代实现Mert Ozdal's answer
推荐阅读
- javascript - 将 base64 编码文件从客户端 JS 传递到服务器端 JS 以进行 API 调用
- node.js - 如何使用车把比较结果?
- c++ - 构建可组合的有向图(用于扫描仪生成器的 Thompson 构建算法)
- javascript - Max-Mn Sum JavaScript HackerRank 挑战
- google-photos - 从相册中选择一些照片并创建一个 url 以使用 Google Photo API 共享它们
- flutter - 我怎样才能得到2次之间的差异?
- debian - 如何让 debian 看到非免费固件文件?
- artificial-intelligence - 如何从 AIML 中的特定映射值中获取键值?
- python - 低级鼠标位置
- visual-studio-code - 如何在 Visual Studio 代码中关闭“包含强调的项目”?