Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8排序浮点值_Java_Sorting_Collections_Java 8 - Fatal编程技术网

Java8排序浮点值

Java8排序浮点值,java,sorting,collections,java-8,Java,Sorting,Collections,Java 8,我有一份有不同经历的员工名单,比如 5.0、3.3、5.5、5.6、4.5等 当我试图使用Math.round对最大到最小的经验进行排序时,它给出了错误的结果,如: 5.6,5.0,5.5,5.3,4.5等 我想要的结果是: 5.6、5.5、5.3、5.0、4.5等 这里我使用了Collections.sort,比如: 这里t1.getExperience将为您提供浮点结果。Math.roundt.getExperience-t1.getExperience不会比较这两个数字,因此我不知道您希望

我有一份有不同经历的员工名单,比如

5.0、3.3、5.5、5.6、4.5等

当我试图使用Math.round对最大到最小的经验进行排序时,它给出了错误的结果,如:

5.6,5.0,5.5,5.3,4.5等

我想要的结果是:

5.6、5.5、5.3、5.0、4.5等

这里我使用了Collections.sort,比如:

这里t1.getExperience将为您提供浮点结果。

Math.roundt.getExperience-t1.getExperience不会比较这两个数字,因此我不知道您希望实现什么

您应该使用:

Collections.sort(employeeList, new Comparator<Emp>() {
    @Override
    public int compare(Emp t, Emp t1) {
        return Float.compare(t1.getExperience(), t.getExperience());
    }
});
请注意,传递给Float.compare的参数与包装比较方法的参数顺序相反,包装比较方法将按降序进行排序。

您可以使用

它将产生:

5.6 5.5 5 4.5 3.3


看到这个答案可能会有帮助。概要文件的比较器正在比较Emp1和Emp2类对象2。什么是经验属性类型还没有具体说明。当您比较员工时,它将如何作为一个比较器?java.lang.Float已经实现了Comparable,任何您想这样做的原因。而不是反向比较这两个值吗?Mth.R.T.GETMeave- T1. GET经验不起作用,因为它会考虑5.3和5相等,因为舍入。这个技巧只适用于整数。也许他想要Comparator.comparinge->Math.rounde.getExperience?@daniu发布的示例显示了规则的降序,所以看起来不像Math.round是必需的。当我在上面尝试时,它说比较浮点,浮点中的浮点不能应用于浮点@Eran@ShylendraMadda你没有试过上面的方法。了解一个参数和两个参数之间的差异。@ShylendraMadda-和,不是同一个参数使用Comparator.comparingDouble。避免不必要的拳击。
Collections.sort(employeeList, new Comparator<Emp>() {
    @Override
    public int compare(Emp t, Emp t1) {
        return Float.compare(t1.getExperience(), t.getExperience());
    }
});
 employeeList.sort(Comparator.comparing(Employee::getExperience).reversed());