iteye_6932 2012-07-16 10:28
浏览 231
已采纳

简单java ArrayList add 问题

请各位大神看看下面的代码,
我想把生成的120个数组放到list当中
但是,后放入的替换了全面的所有数据
不明所以,望说明,谢谢。


package com.zhangxuan.platform.test;

import java.util.ArrayList;
import java.util.List;

public class T {
private static List<int[]> list = new ArrayList<int[]>();
public static void main(String[] args) {
// 测试数据
int[] a = {0, 1, 2, 3, 4};
int[] b = new int[a.length];
sort(a, b, a.length, 0);
for(int[] i : list) {
for(int it : i) {
System.out.print(it + " ");
}
System.out.println();
}
}

public static void sort(int[] a, int[] b, int n, int c) {
    if(c == n)  {
        /*
        for(int i : b) {
            System.out.print(i + " ");
        }
        System.out.println();
        */
        // 把b放到list当中,但是这里就把list的所有数据替换成b了.
        // 所以list全部是4 3 2 1 0 了
        list.add(b);
        return;
    } else {
        for(int i = 0; i &lt; n; i ++) {
            boolean f = false;
            for(int j = 0; j &lt; c; j ++) {
                if(a[i] == b[j]) {
                    f = true;
                    break;
                }
            }
            if(!f) {
                b[c] = a[i];
                sort(a, b, n, c + 1);
            }
        }
    }
}

}

  • 写回答

3条回答 默认 最新

  • MeiJianMing 2012-07-16 11:13
    关注

    看不懂你上面写的意思。但是数组传递的应该是地址,所以如果你新的数组不是通过new的出来的话会覆盖你原有数组的数据。在操作这两个数组之前clone一次就好了。
    [code="java"]
    public static void sort(int[] a, int[] b, int n, int c) {
    [b] int[] aa = a.clone();
    int[] bb = b.clone();[/b]
    if (c == n) {
    [b]list.add(bb);[/b]
    return;
    } else {
    for (int i = 0; i < n; i++) {
    boolean f = false;
    for (int j = 0; j < c; j++) {
    if ([b]aa[i] == bb[j][/b]) {
    f = true;
    break;
    }
    }
    if (!f) {
    [b]bb[c] = aa[i];[/b]
    [b]sort(aa, bb, n, c + 1);[/b]
    }
    }
    }
    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)