Arraylist 输出重复
Arraylist outputs duplicate
我正在使用冒泡排序制作排序程序。我想显示数组每次迭代的样子,所以如果输入是 [5,4,3,2,1]
我希望它在第一次迭代时显示 [4, 3, 2, 1, 5]
public static void main(String[] args) {
Integer[] age = {5,4,3,2,1};
//int[][] ef = new int[age.length][];
ArrayList<Integer[]> fe = new ArrayList<Integer[]>();
for(int i=0;i<2;i++)
{
for(int ii=1;ii<5;ii++)
{
//System.out.println(Arrays.toString(age));
if(age[ii]<age[ii-1])
{
int x = age[ii];
age[ii]=age[ii-1];
age[ii-1]=x;
}
}
System.out.println("result "+Arrays.toString(age)+"\n");
fe.add(age);
}
//System.out.println(Arrays.toString(age));
for(Integer[] f : fe)
{
System.out.print(Arrays.toString(f));
}
}
我想要的输出是[4, 3, 2, 1, 5][3, 2, 1, 4, 5]
相反,我得到 [3, 2, 1, 4, 5][3, 2, 1, 4, 5]
您需要复制数组而不是多次添加相同的引用。
fe.add(age.clone());
您的算法就地修改 age
- 您永远不会创建数组的副本。在 Java 中,任何非基本类型都不是按值存储而是按引用存储,因此 fe
包含对同一数组的多个引用。
我正在使用冒泡排序制作排序程序。我想显示数组每次迭代的样子,所以如果输入是 [5,4,3,2,1]
我希望它在第一次迭代时显示 [4, 3, 2, 1, 5]
public static void main(String[] args) {
Integer[] age = {5,4,3,2,1};
//int[][] ef = new int[age.length][];
ArrayList<Integer[]> fe = new ArrayList<Integer[]>();
for(int i=0;i<2;i++)
{
for(int ii=1;ii<5;ii++)
{
//System.out.println(Arrays.toString(age));
if(age[ii]<age[ii-1])
{
int x = age[ii];
age[ii]=age[ii-1];
age[ii-1]=x;
}
}
System.out.println("result "+Arrays.toString(age)+"\n");
fe.add(age);
}
//System.out.println(Arrays.toString(age));
for(Integer[] f : fe)
{
System.out.print(Arrays.toString(f));
}
}
我想要的输出是[4, 3, 2, 1, 5][3, 2, 1, 4, 5]
相反,我得到 [3, 2, 1, 4, 5][3, 2, 1, 4, 5]
您需要复制数组而不是多次添加相同的引用。
fe.add(age.clone());
您的算法就地修改 age
- 您永远不会创建数组的副本。在 Java 中,任何非基本类型都不是按值存储而是按引用存储,因此 fe
包含对同一数组的多个引用。