我想排序基于价值的地图。的价值由Java8比较返回奇怪的结果
但我看到一些奇怪的行为,下列程序
public class CompareByValueMain {
public static void main(String[] args) {
Map<String,Integer> itemIDToTimeMap = new HashMap<String,Integer>();
itemIDToTimeMap.put("Baggage", 3);
itemIDToTimeMap.put("Handbag", 16);
itemIDToTimeMap.put("Closed Footwear", 4);
itemIDToTimeMap.put("Shirt", 25);
Set<String> itemIDs = itemIDToTimeMap.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
System.out.println(itemIDs);
}
}
输出被证明是正确的
[恤,手袋,封闭鞋,行李]
但是,在输入的时候,我从行李更改为袋 这是给以下输出
[衬衫,袋,手袋,已关闭鞋类]
在理想情况下应该排序基于在所述地图的值,而不管键值来完成。但如果钥匙在这里改变,不知道它为什么会改变。
这工作得很好。你们真棒 – user2166328
@ user2166328不客气。 – Pshemo