Встроенный способ хранения предварительно отсортированных пар ключ-значение в Java? - PullRequest
1 голос
/ 01 февраля 2011

Я ищу способ сохранить сортировку по моим парам ключ-значение. Они сортируются по переменным вне фактических пар ключ-значение (для лучшего пользовательского интерфейса). В настоящее время я использую Hashtable , но это не поддерживает сортировку = (

Hashtable<Integer, String> subscriptions = getUsersSubscriptions(user);

Есть ли какой-нибудь простой способ, которым Java позволяет хранить пары? Лучшая идея, которую я могу придумать, - использовать 2 связанных ArrayLists (один тип Integer, другой тип String) Может кто-нибудь придумать что-то лучше ?

Ответы [ 4 ]

8 голосов
/ 01 февраля 2011

Если ваши пары ключ-значение уже отсортированы, LinkedHashMap будет поддерживать порядок вставки.

Другими словами, ключи, возвращаемые map.keySet(), будут в том порядке, в котором вы положили их на карту.

5 голосов
/ 01 февраля 2011
SortedMap<Integer, String> myMap = new TreeMap<Integer,String>();

Если у вас есть пользовательская сортировка, передайте экземпляр Comparator в конструктор TreeMap.Но будьте осторожны, так как использование Comparator, который не соответствует естественному целочисленному порядку, сделает невозможным понимание и отладку.

1 голос
/ 01 февраля 2011

LinkedHashMap можно использовать здесь.

0 голосов
/ 01 февраля 2011

Есть ли какой-нибудь простой способ, которым Java позволяет хранить пары?

Создайте пользовательский класс, в котором будут храниться два свойства.

Они отсортированы по переменным вне фактических пар ключ-значение

Добавить третье свойство для данных сортировки.

Тогда ваш класс может реализовать Comparable для сортировки данных в соответствии с требованиями на основе этого свойства.

Или вы можете использовать собственный компаратор для сортировки по полю данных сортировки.

Теперь экземпляры классов могут храниться в ArrayList.

...