У меня есть многомерный массив дат, строго ArrayList<ArrayList<Date>>
. Мне нужно создать новый одномерный ArrayList<Date>
, состоящий из элементов во всех массивах вышеупомянутого многомерного.Получение N отсортированных элементов из массива отсортированных массивов
Моя первая мысль состояла в том, чтобы объединить всех арраистов и отсортировать их, но так как я не знаю количества элементов на каждом уровне и нуждаюсь только в определенном количестве элементов в сгенерированном массиве, это было бы бит слишком большой объем памяти и процессора. Я имею в виду, если я присоединяюсь ко всем Date
элементам в одном ArrayList<Date>
, я мог бы закончить работу с тысячами дат в аранжировщике ... чтобы в конце концов подрезать его до первого 20. Вот почему я отказался от этого решения.
Итак, какой алгоритм я мог использовать для сортировки элементов из N (или 2) уровней в 1?
Редактировать
ArrayList<Date> a1 = new ArrayList<Date>();
a1.add(new Date(15));
a1.add(new Date(16));
a1.add(new Date(23));
ArrayList<Date> a2 = new ArrayList<Date>();
a2.add(new Date(1));
a2.add(new Date(25));
a2.add(new Date(89));
ArrayList<Date> a3 = new ArrayList<Date>();
a3.add(new Date(64));
a3.add(new Date(72));
a3.add(new Date(73));
ArrayList<ArrayList<Date>> b = new ArrayList<ArrayList<Date>>();
b.add(a1);
b.add(a2);
b.add(a3);
Мне нужно реализовать getLatestDates(ArryList<ArrayList<Date>>, Integer)
таким образом, что бы вернуть это:
getLatestDates(b, 5) = {Date (89), Date(73), Date(72), Date(64), Date(25)};
В этом примере есть только 3 ArrayList
, но на практике я не буду знайте номер, поэтому я не думаю, что лучшим решением для мобильного устройства является объединение всех арраистов второго уровня и сортировка нового большого, если будет использоваться только несколько элементов.
'Мне нужно генерировать ...'. Это произойдет, только если вы ** попробуете **. – devnull
Не могли бы вы уточнить? Похоже, что вы решили (мысленно по крайней мере) это правильно и сказали, что это не то, что вы хотите. –
Между строками я читал, что вам нужны первые 20 дат, а не сортировка всего списка. Это другой вопрос и имеет более быстрое решение, чем сортировка. Пожалуйста, ясно, что вы хотите. –