下列的这个问题 https://stackoverflow.com/questions/18129807/in-java-how-do-you-sort-one-list-based-on-another关于按另一个列表对列表进行排序,我尝试做同样的事情 - 但由于某种原因它对我不起作用。我缺少什么?
List<Double> nums = Arrays.asList(5.0, 0.9, 10.4);
List<Double> order = Arrays.asList(3.0, 1.0, 2.0);
nums.sort(Comparator.comparing(order::indexOf));
System.out.println(nums);
OUTPUT: [5.0, 0.9, 10.4]
它应该是[0.9,10.4,5.0](根据order
)。我什么地方做得不对?
EDIT:正如你们大多数人所注意到的,我所链接的问题的答案全错了。这就是我真正想做的。 https://stackoverflow.com/questions/56166015/order-list-by-a-related-list-in-java
您正在按数字在数组中的位置对数字进行排序order
列表,但没有任何数字出现在订单列表中。在这种情况下,indexOf将返回-1 https://docs.oracle.com/javase/8/docs/api/java/util/List.html#indexOf-java.lang.Object-对于一切,意味着一切都与其他一切平等。在这种情况下,结果排序顺序是未指定的 - 尽管您实际上可以假设它不会改变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)