Разделение элементов в 3D ArrayList - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть 2D List типа Integer (ArrayList< List < Integer > >), в настоящее время существует 177147 списков целых чисел .Я хочу разделить их на 243 разные коллекции (каждая коллекция имеет 729 списков элементов)

например, Array[0] -> Array[728] go into Collection[0] ... до Array[176417] -> Array[177146] goes into Collection[242]

Стоит ли использовать ArrayList<ArrayList<List<Integer>>>?Если да, то как мне отделить эти элементы таким образом?

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Итерации по элементам и добавление по частям в новую структуру:

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 голосов
/ 28 февраля 2012
for(int c = 0; c <= 242; c++)
{
    for(int i = 0; i < 729; i++)
    {
        int position = (c * 729) + i;
        Collection[c][i] = Array[position];
    }
}

Возможно, вы захотите проверить мою математику по формуле для позиции, но идея здравая.

...