java - 对数组列表进行排序

标签 java sorting arraylist

我必须按用户输入的日期和时间对数组列表进行排序,但由于某种原因输出不按顺序

在此代码下方是我用来订购的代码

public int compareTo(Vehicle v){
    int returnValue = 0;
    if (this.parkDate.year> v.parkDate.getYear() && 
            this.parkDate.month> v.parkDate.getMonth() &&
            this.parkDate.day> v.parkDate.getDay() &&
            this.parkDate.hours> v.parkDate.getHours() &&
            this.parkDate.minuets> v.parkDate.getMinuets()){
        returnValue =  1; }
    else
        returnValue = - 1;
    return returnValue;
}

Here is the output message

最佳答案

你的比较逻辑不正确。您可以使用 Integer.compare(int, int) 进行比较,并在非零的情况下返回结果。比如,

public int compareTo(Vehicle v) {       
    int returnValue = Integer.compare(this.parkDate.getYear(), 
            v.parkDate.getYear());
    if (returnValue != 0) {
        return returnValue;
    }
    returnValue = Integer.compare(this.parkDate.getMonth(), 
            v.parkDate.getMonth());
    if (returnValue != 0) {
        return returnValue;
    }
    returnValue = Integer.compare(this.parkDate.getDay(), 
            v.parkDate.getDay());
    if (returnValue != 0) {
        return returnValue;
    }
    returnValue = Integer.compare(this.parkDate.getHours(), 
            v.parkDate.getHours());
    if (returnValue != 0) {
        return returnValue;
    }
    return Integer.compare(this.parkDate.getMinuets(), 
            v.parkDate.getMinuets());
}

或者,您可以使用数组和类似的东西来缩短上面的内容

int[] a = { this.parkDate.getYear(), this.parkDate.getMonth(), 
        this.parkDate.getDay(), this.parkDate.getHours(), 
        this.parkDate.getMinuets() };
int[] b = { v.parkDate.getYear(), v.parkDate.getMonth(), 
        v.parkDate.getDay(), v.parkDate.getHours(), 
        v.parkDate.getMinuets() };
for (int i = 0; i < a.length; i++) {
    int rv = Integer.compare(a[i], b[i]);
    if (rv != 0) {
        return rv;
    }
}
return 0;

最后,我相信您想要分钟而不是小步舞曲

关于java - 对数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581501/

相关文章:

java - 在对象列表中搜索名称的例程...帮助。 java

java - 在客户端上使用 ftp4j 忽略 CentOS 上的自签名 ssl 证书

java - 甲骨文。使用 LDAP 进行身份验证始终返回 -16

java - 我们如何在 ConcurrentUpdateSolrServer 上设置压缩?

java - 将 ArrayList 的一部分分配给字符串

java - 我们如何删除 arrayList 中的多个值?

java - JAVA 组织对象数组列表

c - 理解 C 中的二维字符数组

mysql - 修改 WordPress 查询 --> 按另一个表中的自定义值排序

c# - C# 中的多维数组列表或列表?