Java三个属性,存储+排序的最佳方式

时间:2016-12-14 12:34:11

标签: java guava

我有一个数据结构存储在地图中,其中包含多个地图作为我想要按多个属性排序的值。

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

我现在有以下内容:

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

但对我来说,目前尚不清楚如何进行排序。正如您在使用Multimap时所看到的,一个Element可以有多个字符串。最后,我想按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 个答案:

答案 0 :(得分:1)

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

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

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