1
可能重复:
How to sort a Map<Key, Value> on the values in Java?在Java中的价值排序地图
这里是我的杰作:
ArrayList<Map.Entry<Integer, Integer>> suits = new ArrayList<Map.Entry<Integer, Integer>>();
suits.add(new AbstractMap.SimpleEntry(0, 3));
suits.add(new AbstractMap.SimpleEntry(1, 5));
suits.add(new AbstractMap.SimpleEntry(2, 1));
suits.add(new AbstractMap.SimpleEntry(3, 3));
Collections.sort(suits, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> e1, Entry<Integer, Integer> e2) {
if (e1.getValue() > e2.getValue())
return 1;
else if (e1.getValue() < e2.getValue())
return -1;
else if (e1.getKey() > e2.getKey())
return 1;
else if (e1.getKey() < e2.getKey())
return -1;
else
return 0;
}
});
它的工作原理(至少在简单的测试情况下,我包括)。它的目的是根据卡片数量(例如3个黑桃,5个心形,5个钻石,6个球杆)对一张牌进行分类,然后继续用少量牌(3个黑桃)做西装。
我已经看到按值排序Map这个问题是一个常见的问题,并且我在理解其他地方提供的一些答案时有点麻烦,因为我绝对没有正式的编码培训,也没有Java编程 - 所以我做了我自己的。 在这段代码中是否有明显的错误?如果它不值得每天使用WTF,那对我来说已经足够了。
谢谢。
在代码中没有什么是公然错误的。但是'Map'不需要做很多事情;你只需要一个键值对的List(作为'Map.Entry'对象),而不是'Map'。 – Jesper
如果您创建自定义类来表示您的卡,您的代码将更容易阅读。 – Mitch