[英]Adding a 1d array in 2d array in java
我正在編寫代碼,我必須在2d數組中添加一個1d數組。 例如:我有一個用戶列表數組,它將在其中添加數據數組
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;
您已正確識別問題線。 從技術上講,Java沒有多維數組。 相反,它具有數組的數組。 這意味着當您說userList[i] = data
,您只是在告訴Java更新對userList[i]
的引用以指向相同的data
數組。 (這被稱為別名錯誤,因為您認為自己正在處理不同的數組,但是您只是用不同的名稱調用同一數組。)
相反,在這種情況下,最好這樣做:
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
數組時,它會復制每個版本的data
數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.