Эффективный список EnumSet + - PullRequest
1 голос
/ 20 мая 2010

Кто-то знает хорошее решение для EnumSet + Список

Я имею в виду, что мне нужно хранить значения перечисления, а также сохранять порядок и иметь возможность доступа к его индексу значения перечисления в коллекции за O (1) раз.

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Самая близкая вещь, которую я могу придумать, присутствующая в API - это LinkedHashSet:

С http://java.sun.com/j2se/1.4.2/docs/api/java/util/LinkedHashSet.html:

Реализация хеш-таблицы и связанного списка интерфейса Set с предсказуемым порядком итераций.


Я сомневаюсь, что можно делать то, что ты хочешь. По сути, вы хотите искать индексы в постоянном времени, даже после изменения порядка в списке. Если вы не позволите операциям удаления / переупорядочения занимать O (n) время, я полагаю, что вы не можете избежать неприятностей с O (log n) (что может быть достигнуто структурой кучи).

0 голосов
/ 20 мая 2010

Единственный способ, с помощью которого я могу получить доступ к порядку и O (1), - это дублировать данные в List и массиве индексов (завернутых в симпатичный маленький OrderedEnumSet, Конечно).

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