2016-12-14 3 views
0

У меня есть структура данных, хранящаяся на карте с мультимапом в качестве значений, которые я хочу сортировать по нескольким атрибутам.Java три атрибута, лучший способ сохранить + сортировать

Фон: У меня есть JavaFX GridPane, в котором я хочу отображать некоторые вещи в упорядоченной форме. Поэтому для каждой точки в GridPane у меня есть некоторые Элементы с одной + строкой, связанной с ними. Я хочу отображать Элементы на основе алфавитного порядка строк.

Я следующее сейчас:

Map<Coordinate, Multimap<Element, String>> myMap = new HashMap<Coordinate, Multimap<Element, String>>(); 

Но для меня это не понятно, как сделать сортировку. Как вы видите, используя Multimap, один элемент может иметь несколько строк. В конце я хочу заказать координату (x и y) и атрибут String для каждой координаты. Как это сделать? Или кто-нибудь лучше знает, как хранить эти атрибуты?

Edit: Координировать сортировки легко и не проблема:

List<Coordinate> keys = new ArrayList<Coordinate>(myMap.keySet()); 
Comparator<Coordinate> comparator = Comparator.comparing(Coordinate::getX).thenComparing(Coordinate::getY); 
Collections.sort(keys, comparator); 

я только что объяснил это сделать моя проблема ясна. Основная проблема: как отсортировать строки со связанными элементами для каждой координаты. Или «лучшая» структура для сохранения атрибутов.

Спасибо!

+1

Возможный дубликат [Использование компаратора для создания пользовательского сортировки] (http://stackoverflow.com/questions/5245093/using-comparator-to-make-custom-sort) – Idos

+1

Сортировка скважин не должна быть сложной , (Сопоставимый интерфейс). Второе немного сложнее, потому что вам придется сортировать по значению, и вам нужно будет решить, какая строка для мультимапа, которую вы используете для сравнения – ParkerHalo

ответ

1

О, черт побери. Можете ответить на этот вопрос сам. Я просто делаю String ключ и значение Element. Затем с использованием

ListMultimap<String, Element> lmm = Multimaps.newListMultimap(
new TreeMap<>(), ArrayList::new); 

как предложено here. Et voilà ... Для каждой координаты внутренняя карта сортируется по атрибуту String.

Смежные вопросы