将项目分隔为3d ArrayList

时间:2012-02-27 22:40:26

标签: java arraylist multidimensional-array

我有List类型的IntegerArrayList< List < Integer > >), 目前有 177147个整数列表。 我想将它们分成243个不同的集合(每个集合有729个元素列表)

e.g。 Array[0] -> Array[728] go into Collection[0] ...直到      Array[176417] -> Array[177146] goes into Collection[242]

我应该使用ArrayList<ArrayList<List<Integer>>>吗? 如果是这样,我该如何以这种方式分离这些项目?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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];
    }
}

您可能想检查我的数学位置公式,但这个想法很合理。