Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中的2d数组中添加1d数组_Java_Arrays - Fatal编程技术网

在java中的2d数组中添加1d数组

在java中的2d数组中添加1d数组,java,arrays,Java,Arrays,我正在写一个代码,我必须在2d数组中添加一个1d数组。 例如:我有一个userlist数组,它将在其中添加数据数组 Double[][] userList = new Double[4][appName.size()]; Double[] data = new Double[appName.size()]; 因此,用户列表将有如下内容: userlist={{1,2,3,4}, {2,3,4,7}, {0,0,1,2,}} 其中,{1,2,3,4}=>表示数据数组 问题:我遇到的问题是

我正在写一个代码,我必须在2d数组中添加一个1d数组。 例如:我有一个userlist数组,它将在其中添加数据数组

Double[][] userList =  new Double[4][appName.size()];
Double[] data = new Double[appName.size()];
因此,用户列表将有如下内容:

userlist={{1,2,3,4},  {2,3,4,7},  {0,0,1,2,}}
其中,
{1,2,3,4}
=>表示数据数组

问题:我遇到的问题是,每次数据数组返回的内容都会用新数据覆盖userlist中的整个内容

例如:

if userlist={{1,2,3,4},  {2,3,4,7}} and data returns {0,0,4,5}
then my userlist becomes: {{0,0,4,5}, {0,0,4,5}, {0,0,4,5} }.
代码:

Double[][] userList = null;
userList = new Double[4][appName.size()];
String prevName = null;
Double[] data = new Double[appName.size()];
int count=0;

   for(AuditInformationEntity e : auditInfoList)
   {
    //int count =0;

    if(prevName== null || !prevName.equals(e.getDisplayName()) )
    {

        if(prevName!=null)
        {

        ////====>> I think Something to be done here<========/////  
            userList[count++]=data;
        }
        //data = new ArrayList<Double>();
        for(int i = 0 ; i<appName.size();i++)
            data[i]=0d;
        prevName = e.getDisplayName();
    }
    Double d = data[appName.indexOf(e.getAppName())];

    if(d==null){
        d=1d;
        data[appName.indexOf(e.getAppName())]= d;
    }
    else
    {
        d++;
        data[appName.indexOf(e.getAppName())]= d;

    }


}
   userList[count++]=data;



       return userList;
Double[]userList=null;
userList=new Double[4][appName.size()];
字符串prevName=null;
Double[]data=新的Double[appName.size()];
整数计数=0;
对于(审核信息实体e:审核信息列表)
{
//整数计数=0;
if(prevName==null | |!prevName.equals(e.getDisplayName()))
{
if(prevName!=null)
{

////==>>我认为这里需要做些什么您已经正确地确定了问题所在。Java技术上没有多维数组,而是有数组数组。这意味着当您说
userList[I]=data
时,您只是告诉Java更新
userList[I]的引用
指向相同的
数据
数组。(这称为别名错误,因为您认为您处理的是不同的数组,但您只是用不同的名称调用相同的数组。)

相反,在这种情况下,最好这样做:

int i;
double userList[][] = new double[numberOfArrays][];
double data[] = new double[4];
...
    // inside a loop
    // read into data
    userList[i] = Arrays.copyOf(data);

当您创建
userList
时,它实际上并不分配内部4元素数组;当您添加
数据时,它会复制
数组的每个版本。

整个代码在一个方法中吗?是的,它在一个方法中。。