首页 > 解决方案 > Java Comparator.comparing 不比较?

问题描述

这个关于按另一个列表排序列表的问题之后,我尝试做同样的事情 - 但由于某种原因,它对我不起作用。我错过了什么?

    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)。我做错了什么?

编辑:正如你们大多数人所注意到的,我得到了我链接到所有错误的问题的答案。这就是我真正想做的事情。

标签: javasorting

解决方案


您正在按它们在order列表中的位置对数字进行排序,但没有一个数字出现在订单列表中。在这种情况下,indexOf将返回-1一切,这意味着一切都等于其他一切。在这种情况下,生成的排序顺序是未指定的——尽管您可以实际假设它不会改变。


推荐阅读