java - 按参数排序和对象

标签 java sorting

我有一个带有一些字符串参数的类。我从这个对象制作了一个实例列表。然后我做了一个比较器排序函数来按不同的主题对列表进行排序。例如通过 StartTime 或 EndTime。时间以字符串格式定义。这是排序的比较函数:

if (sortType == Sort.STARTTIME){
    Collections.sort(routeList, new Comparator<Route>() {
        @Override
        public int compare(Route o1, Route o2) {
            if (Double.parseDouble(o1.getTimeS()) >= (Double.parseDouble(o2.getTimeS())))
                return 1;
            else
                return -1;
        }
    });
}

它可以工作,但是当我用 > 或 < 或 <= 符号更改比较器时,它将无法工作!或者当我将它们与 endTime 进行比较时,则仅适用于 <= 并且我无法按递增顺序对其进行排序!!!!即使我无法更改 ot 1 和 -1 的位置。

if (sortType == Sort.ENDTIME){
    Collections.sort(routeList, new Comparator<Route>() {
    @Override
    public int compare(Route o1, Route o2) {
        if ((Double.parseDouble(o1.getTimeE()) <= Double.parseDouble(o2.getTimeE()))))
            return 1;
        else
            return -1;
    }
});
}

我真的不知道这是怎么回事!!!!!!!!!

public class Route extends Arc {
    private  String type;
    private int secId;
    private String tId;
    private int event;
    private String name;
    private String nameS;
        }
    private String nameE;
    private String timeS;
    private String timeE;
    .....
}

还有几行数据

57779.999999999985 57779.999999999956 57778.999999999985 57778.99999999994 57778.99999999993 57778.99999999988 57777.0 57777.0 57750.0 57749.99999999994 57734.99999999994 57734.99999999988 57719.999999999985 57719.999999999985

最佳答案

您对comparators的理解是错误的

当条件相等时,它们应该返回 -1、1 和 0。因此,您当前使用 <= 进行比较并返回 -1 或 1 是不正确的。

相反,您必须实现这样的逻辑:

比较其两个参数的顺序。当第一个参数小于、等于或大于第二个参数时,返回负整数、零或正整数。

换句话说:您的第一个实现可能适用于您测试的数据;但这是不正确的;并且颠倒逻辑并不能解决这个问题。

最后:简单的答案在这里;只需使用 Double.compare()在你的比较器中。因为比较 float 实际上是一件棘手的事情。

关于java - 按参数排序和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40555309/

相关文章:

java - setOpaque() 方法

java - 如何使用 replaceFirst 替换 {....}

java - 无法将我的请求参数发送到bluemix部署的node.js

mysql - 一条SQL语句

javascript - 使用自定义顺序对字符串数组进行排序

javascript - 根据嵌入文档的数量对记录进行排序

java - 尝试测试 ListIterator 但它进入无限循环

java - 获取 Android EditText 中点击链接的 URL 或 HTML

sorting - 如何获取b树的第n个值

java - Apache Beam 框架 - 按降序排序