перечисление в упорядоченном списке или наборе - PullRequest
3 голосов
/ 07 марта 2011

Я хочу создать упорядоченный набор или список и добавить перечисления в коллекцию, чтобы они вставлялись в порядке перечисления.
Могу ли я сделать это без создания явного компаратора?Существует ли коллекция, которая будет использовать внутренний порядок перечисления для поддержания порядка в коллекции?

Пример того, что я хочу сделать в Groovy (я ожидаю, что он будет похож на Java с циклом for вместозамыкания):

TreeSet<TransactionElement> elements = new TreeSet<TransactionElement>() 
        elementList.each{ element -> elements.add(element)}

TransactionElement является перечислением, и элементы должны быть добавлены в TreeSet в порядке их перечисления в перечислении

ОБНОВЛЕНИЕ: Решение, с которым я пошел:

EnumSet<TransactionElement> elements = EnumSet.noneOf(TransactionElement.class); 
        elementList.each{ element -> elements.add(element)}

Несколько замечательных примеров использования EnumSet и EnumMap здесь

Ответы [ 3 ]

7 голосов
/ 07 марта 2011

Если вы хотите Set из enum значений, тогда, вероятно, лучшим выбором будет EnumSet.Это не только более эффективно, чем использование неспециализированной Set, но также гарантирует, что итерация будет работать в естественном порядке enum.

3 голосов
/ 07 марта 2011

Возможно, вы могли бы взглянуть на реализацию EnumSet .

1 голос
/ 07 марта 2011

По умолчанию порядок объявления Enums определяет естественный порядок Enums.Из Javadoc CompareTo:

Константы перечисления сопоставимы только с другими константами перечисления того же типа перечисления.Естественный порядок, реализованный этим методом, является порядком, в котором объявлены константы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...