2016-12-14 119 views
0

我有一个数据结构存储在一个带有多图的地图中,作为我想按多个属性排序的值。Java三个属性,最佳存储方式+排序

背景:我有一个JavaFX GridPane,我希望以有序的形式显示一些东西。因此,对于GridPane中的每个点,我都有一些与它们相关的元素。我想根据字符串的字母顺序来显示元素。

我见现在以下:

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

但对我来说是不明确的,如何做排序。正如您通过使用Multimap所看到的,一个元素可以有多个字符串。最后,我想通过Coordinate(x和y)以及每个坐标的String属性进行排序。怎么做?或者有没有人有更好的想法如何存储这些属性?

编辑:坐标排序是容易的,而不是问题:

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

排序好的坐标不应该很难。 (可比较的界面)。第二个有点难,因为你必须按价值排序,并且你必须决定你用来比较的multimap的哪个字符串值 – ParkerHalo

回答

1

哦该死。可以自己回答这个问题。我只是使String的关键和Element的价值。然后使用

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

如建议here。 Etvoilà...对于每个坐标,内部地图按字符串属性排序。

相关问题