Учитывая ArrayList transactions
отсортированных целых массивов ArrayLists, я пишу код для возврата его уникальных элементов. Например, приСписок уникальных элементов, заданных списком списков
transactions = [
[1, 1, 2, 3, 5, 8, 13, 21],
[2, 3, 6, 10],
[11, 21]
]
мой код должен возвращать уникальные элементы, сохраняя Порядок сортировки:
[1, 2, 3, 5, 6, 8, 10, 11, 13, 21]
Для достижения этой цели, я просто добавляя каждый элемент в каждом списке на LinkedHashSet, который по его определение сохраняет сортировку и удаляет дубликаты.
Set<Integer> uniqEl = new LinkedHashSet<>();
for (List<Integer> l : transactions) {
for (Integer n : l) {
uniqEl.add(n);
}
}
Хотя мой код выполняет работу, используя библиотеку Java, я хочу более эффективную реализацию. Любые идеи для лучшего алгоритма для создания отсортированного списка уникальных элементов из списка списков?
Более эффективный? Итак, вы действительно измерили и это реальное узкое место в вашей заявке? (Заметьте, почему бы не использовать «TreeSet»?) – Tunaki
'uniqEl.addAll (l)' может быть * незначительно * более эффективным. –
Ваш результат будет «1, 2, 3, 5, 8, 13, 21, 6, 10, 11', который не является порядком сортировки, который вы хотели. Использование «TreeMap», например, предложенного @Tunaki, даст вам желаемый результат. – Andreas