2012-02-27 37 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]; 
    } 
} 

你可能想检查我的数学公式的位置,但想法是健全的。上的元素