Порядок Java Collection по разным параметрам - PullRequest
1 голос
/ 13 июля 2011

У меня есть список, который содержит такие объекты, как адрес - например, город, улица, имя.

И мне всегда нужно получать 3 списка: первый - по городу, второй - по улице, третий - по имени.Понятно, что возможен заказ последовательно того же списка.Но это отнимает много времени.Можно ли создать что-то вроде Iterator, которое может зависеть от параметра, возвращающего все члены коллекции в соответствующем порядке?Или существует другое решение?

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Вы можете построить 3 компаратора - 1 на основе каждого элемента критерия, а затем вызвать Collections.sort (список, компаратор) для получения каждой сортировки.

Если вы делаете это много раз в одном и том же списке, сделайте 3 копии.

Обратите внимание, что идея итератора на самом деле не будет ужасно эффективной, поскольку для нее потребуется какой-то способ проследить по списку, который будет по меньшей мере столь же уродливым, как и сортировка.То есть итератору нужно будет знать, какой элемент будет следующим, иным образом, кроме естественного порядка в списке.Пересортировать список так же легко, как и пытаться перемещаться по нему в естественном порядке.

1 голос
/ 13 июля 2011

Не со стандартной структурой коллекции Java. То, что вы просите поработать, вы должны построить разные деревья поиска, которые работают на одной коллекции.

Это похоже на наличие индексов для разных столбцов в БД

...