gpt4 book ai didi

java - 在java中的二维数组中添加一维数组

转载 作者:行者123 更新时间:2023-11-30 11:28:20 25 4
gpt4 key购买 nike

我正在编写代码,我必须在二维数组中添加一维数组。例如:我有一个用户列表数组,它将在其中添加数据数组

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}===> 代表数据数组。

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

例如:

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;

最佳答案

您已正确识别问题行。 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 元素数组;当您添加它时,它会复制每个版本的 data 数组。

关于java - 在java中的二维数组中添加一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com