2012-02-27 17 views
0

我有型IntegerArrayList< List <Integer> >)的2D List, 目前有整數的177147名單。 我想這些分離成243個不同的集合(具有元件729只列出了每個集合)物品分離成3D的ArrayList

例如Array[0] -> Array[728] go into Collection[0] ......直到 Array[176417] -> Array[177146] goes into Collection[242]

應該我寧願用ArrayList<ArrayList<List<Integer>>>? 如果是這樣,我怎麼分開以這種方式這些項目嗎?

+0

您還沒有給予足夠的信息,任何人都可以有效的建議。你爲什麼要分開清單?你分裂的標準是什麼?爲什麼243個729列表?你需要修改這些列表嗎? (如果沒有,那麼也許你應該使用數組來代替) – DNA 2012-02-27 22:48:25

回答

1

迭代和切片的新結構增加:

public void run() { 
    int SLICE = 729; 
    List<List<Integer>> list2d = new ArrayList<List<Integer>>(); 
    // fill original list 
    List<List<List<Integer>>> list3d = new ArrayList<List<List<Integer>>>(); 
    List<List<Integer>> partial = new ArrayList<List<Integer>>(SLICE); 
    for (List<Integer> list : list2d) { 
     partial.add(list); 
     if (partial.size() == SLICE) { 
      list3d.add(partial); 
      partial = new ArrayList<List<Integer>>(SLICE); 
     } 
    } 
    if (!partial.isEmpty()) { 
     list3d.add(partial); 
    } 
} 
+0

感謝您的幫助!這與克隆數組列表一起工作! – JJI90 2012-02-28 13:46:14

+0

代碼固定,以避免重複使用的部分陣列。 – 2013-03-11 11:12:34

0
for(int c = 0; c <= 242; c++) 
{ 
    for(int i = 0; i < 729; i++) 
    { 
     int position = (c * 729) + i; 
     Collection[c][i] = Array[position]; 
    } 
} 

你可能想檢查我的數學公式的位置,但想法是健全的。上的元素