尝试在 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的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中使用 for 循环创建嵌套小部件

JS循环+循环嵌套+经典例题+图形题

在 for 循环期间访问嵌套对象 VueJS

在 Haskell 中重写嵌套 for 循环的好技术是啥?

JS中循环嵌套六大经典例题+六大图形题,你知道哪几个?

尝试遍历 django 模板中的嵌套字典