2014-04-20 76 views
0

我需要創建n陣列的列表,並且只填寫每個陣列中的第一條記錄,其中第一個陣列的第一條記錄將等於arr數組中的第一條記錄,第一條記錄第二個數組的數量將等於arr數組中的第二個記錄等)。訪問陣列列表中的記錄

在C#很簡單:

 List<Point[]> grupy = new List<Point[]>();   //create n array of Point 
     for (int i = 1; i <= n; i++) 
      grupy.Add(new Point[10]);      //array length will be 10 

     int a = 0; 
     foreach (Point[] x in grupy)       
     {             
      grupy[a][0] = new Point(arr[a]);    //fill first records in all arrays form list 
      a++; 
     } 

我需要這個代碼的Java,我發現,我不能在陣列從列表來電記錄這樣的:

List<Point[]> grupy = new ArrayList<Point[]>();  //create n arrays of Point 
     for (int i = 1; i <= n; i++) 
      grupy.add(new Point[10]); 

    int a = 0; 
    for(Point[] x : grupy)        
    {             
     grupy[a][0] = new Point(arr[a]);   //WRONG WAY 
     a++; 
    } 

grupy.get(a)[0]不能工作了。所以,我的問題是:如何從數組列表中訪問指定的數組中的記錄?

我知道我可以在for()創建temp陣列,保存arr.get(a)temp[0]並添加tempgrupy但之後,我需要顯示或修改指定的記錄,這樣也無濟於事。

+2

你可以從陣列獲取ARR [指數],然後從列表中你可以得到它l.get (index) –

+0

@bhutto:但是grupy.get(index)返回數組不是數組中的單個值(grupy是數組列表)。 –

+0

是的我知道,問題是與arr.get(a),arr是數組數據結構。 grupy [a] [0]是java列表,您不需要將列表分配爲grupy [a] [0],您需要將列表中的元素添加爲grupy.add(arr [index]) –

回答

2
int a = 0; 
for(Point[] x : grupy)        
{             
    x[0] = arr[a]; 
    a++; 
} 
+0

它有助於保存值謝謝,但仍不知道如何訪問指定的記錄。例如:我的'Point'類可以計算兩點之間的距離。所以我稱'double minimum = grupy [0] [0] .Distance(anotherPoint);' - 此方法計算從第一個數組形式列表中的第一個索引到另一個點之間的距離。但Java不允許調用'grupy [0] [0]'。 –

+1

由於grupy是一個List,所以你可以使用'Point [] mypointArray = grupy.get(0);'獲得一個點數組。然後只需執行'Point myPoint = myPointArray [0];' – jhamon

+0

工作,感謝您的幫助:) –

0

如果你用java 8行,你可以使用流API與forEachmapfilter功能