尝试在 for 循环中更新嵌套的 ArrayList
Posted
技术标签:
【中文标题】尝试在 for 循环中更新嵌套的 ArrayList【英文标题】:Trying to update nested ArrayList within a for loop 【发布时间】:2022-01-10 18:57:55 【问题描述】:我是 java 新手,在尝试解决提示时遇到了一个问题,可能由于我对问题的性质缺乏了解,我无法找到答案。我有一个由嵌套在另一个 ArrayList 中的整数组成的 ArrayList。我可以以完全相同的方式在循环外更新我的临时列表,但不能在循环内更新。当我打印 mainList 时,对于每个整数输入,我都会在 mainList 中收到一个空的 ArrayList。
import java.util.*;
public class Lock
public static void main(String[] args)
Scanner input = new Scanner(System.in);
ArrayList<ArrayList<Integer>> mainList = new ArrayList<>();
ArrayList<Integer> tempList = new ArrayList<>();
while(input.hasNextInt())
for (int i = 0; i < 4; i++)
int n = input.nextInt();
tempList.add(n);
mainList.add(tempList);
tempList.clear();
System.out.println(mainList);
input.close();
int angleSum;
for (ArrayList<Integer> integers : mainList)
//2 clockwise turns
angleSum = 0;
angleSum = angleSum + 720;
//init values within nested <Int> ArrayLists
int val1 = integers.get(0);
int val2 = integers.get(1);
int val3 = integers.get(2);
int val4 = integers.get(3);
//Continue until first number in Combination
angleSum = angleSum + (9 * Math.abs(val1 - val2));
//CounterClockwise turn
angleSum = angleSum + 360;
//Counter Clockwise until val3
angleSum = angleSum + (360 - (9 * (39 - Math.abs(val2 - val3))));
//Clockwise until val4
angleSum = angleSum + (9 * Math.abs(val3 - val4));
System.out.println(angleSum);
【问题讨论】:
【参考方案1】:当您在tempList
上调用clear()
时,您将删除刚刚添加到mainList
的列表实例上的内容。
您必须改为创建新实例,以便mainList
中的现有项目不受影响:
// tempList.clear(); //! wrong
tempList = new ArrayList<>();
【讨论】:
以上是关于尝试在 for 循环中更新嵌套的 ArrayList的主要内容,如果未能解决你的问题,请参考以下文章