簡體   English   中英

在Java中的2D數組中添加1D數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM