java - 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
)。我做错了什么?
编辑:正如你们大多数人所注意到的,我得到了我链接到所有错误的问题的答案。这就是我真正想做的事情。
解决方案
您正在按它们在order
列表中的位置对数字进行排序,但没有一个数字出现在订单列表中。在这种情况下,indexOf
将返回-1
一切,这意味着一切都等于其他一切。在这种情况下,生成的排序顺序是未指定的——尽管您可以实际假设它不会改变。
推荐阅读
- python - 如果用户输入字符串而不是整数,如何显示消息?
- c++ - 为什么要为单个赋值操作调用复制构造函数和重载赋值运算符?
- c - 我将如何修复 C 中的 if 语句以使其按预期工作?
- python - Python:为什么我的 POST 请求不起作用?
- three.js - 使用 GLTF 支持混合材质/纹理
- java - 尝试读取具有各种但已知输入类型的文件并获得 InputMismatchException
- php - PHP 使用 nohup equiv 触发后台进程
- python - 如何使用 Python 绘制时间和价值的时间序列图
- node.js - 如何从 azure 函数中的子函数返回 http 输出
- reactiveui - ReactiveUI:视图不包含“WhenActivated”的定义