2011-02-01 2 views
1

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

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

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

+2

Использовать реализацию 'Map' как' Hashtable' считается устаревшим. – Qwerky

ответ

8

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

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

+0

+1, ранее не знал об этом классе. – Daniel

5
SortedMap<Integer, String> myMap = new TreeMap<Integer,String>(); 

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

+0

@Ridudel: Спасибо за редактирование, но вы вернули мою TreeSet-> TreeMap typo :) – Daniel

0

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

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

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

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

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

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

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