我有一个数据结构存储在地图中,其中包含多个地图作为我想要按多个属性排序的值。
背景:我有一个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);
我刚刚解释过这个问题,以解决我的问题。主要问题是:如何使用每个坐标的相关元素对字符串进行排序。或者是“更好”的结构来保存属性。
谢谢!
答案 0 :(得分:1)
String
键和Element
值。然后使用
ListMultimap<String, Element> lmm = Multimaps.newListMultimap(
new TreeMap<>(), ArrayList::new);
建议here 。 Etvoilà...对于每个坐标,内部地图按字符串属性排序。