gpt4 book ai didi

Java 将 ArrayList 添加到 ArrayList> 替换 ArrayList 的 ArrayList 的所有元素

转载 作者:行者123 更新时间:2023-12-01 07:29:36 35 4
gpt4 key购买 nike

很抱歉标题太长,如果您能想到更好的标题,请告诉我!

我正在做的是尝试创建一个 ArrayList 的 ArrayList 并将 ArrayList 逐个添加到其中。两个AL<AL<I>>我所拥有的称为三角形和正方形,我添加 AL<I>s通过 addToList() 方法 - 添加 AL<I>调用 temp 到适当的 AL<AL<I>> 。 temp 似乎没有问题,但是当我运行整个方法 FigurateNumbers() 后,我的 AL<AL<I>>s只包含[98,70],最后添加的温度。代码如下:

import java.util.ArrayList;
import java.util.Iterator;

public class problem
{
public static ArrayList<ArrayList<Integer>> triangle = new ArrayList<ArrayList<Integer>>();
public static ArrayList<ArrayList<Integer>> square = new ArrayList<ArrayList<Integer>>();
public static ArrayList<Integer> temp = new ArrayList<Integer>();

public static void figurateNumbers()
//Inserts into individual arraylists, numbers, all figurate numbers square : octagonal
{
for (int ii = 1; ii < 141; ii++)
{
if ((ii * ii >= 1000) & (ii * ii < 10000))
addToList(ii * ii , square);
if (((ii * ii + ii) / 2 >= 1000) & ((ii * ii + ii) / 2 < 10000))
addToList((ii * ii + ii) / 2 , triangle);
}
}


public static void addToList(int num, ArrayList<ArrayList<Integer>> list)
//Splits the two parts of the number and inserts the arraylist into the proper arraylist
{
temp.clear();
int numInt_one = Integer.parseInt(String.valueOf(num).substring(0,2));
int numInt_two = Integer.parseInt(String.valueOf(num).substring(2,4));
temp.add(numInt_one);
temp.add(numInt_two);
list.add(temp);
}

public static void main (String [] args)
{
figurateNumbers();

System.out.println(triangle.size());
System.out.println(square.size());
Iterator<ArrayList<Integer>> it = square.iterator();
while(it.hasNext())
{
ArrayList<Integer> obj = it.next();
System.out.println(obj);
}
System.out.println(triangle.get(25));
}
}

无论是关于当前的问题还是我对这些数据结构的使用,我们将不胜感激。

最佳答案

每次您在下面调用时,您不会创建一个新的 temp 实例,相同的列表会添加到您正在清除的列表中。请记住,它是所添加列表的引用。

 public static void addToList(int num, ArrayList<ArrayList<Integer>> list)
//Splits the two parts of the number and inserts the arraylist into the proper arraylist
{
// temp.clear();// this is the issue do below
ArrayList<Integer> temp = new ArrayList<Integer>();
int numInt_one = Integer.parseInt(String.valueOf(num).substring(0,2));
int numInt_two = Integer.parseInt(String.valueOf(num).substring(2,4));
temp.add(numInt_one);
temp.add(numInt_two);
list.add(temp);
}

关于Java 将 ArrayList<Integer> 添加到 ArrayList<ArrayList<Integer>> 替换 ArrayList 的 ArrayList 的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162077/

35 4 0