可比较的是按降序排列而不是提升

 嗒嗒姗_215 发布于 2023-01-29 21:06

所以,这可能只是我的一个逻辑错误,但我不知道如何.

@Override
public int compareTo( Activity t ) {
    // currently we're naturally sorting by created, description, uuid
    int createdComp = t.created.compareTo( created ); // created is an Instant

    if ( createdComp == 0 ) {
        int descComp = t.description.compareTo( description ); // description is a String
        if ( descComp == 0 ) {
            return t.id.compareTo( id ); // id is a UUID
        } else {
            return descComp;
        }

    }
    return createdComp;
}

这是我的调试代码,对于我没有放的代码,它使用相同的Instant,并且随机生成UUID.

    NavigableSet ai = new TreeSet( Arrays.asList( i, g, h, f, a, b, c, e, d ) );

    assertEquals( ai.size(), 9, "NaviSet Size is 9" );

    for ( Activity act : ai ) {
        System.out.println( act );
    }

这是输出

1a8861eb-96c8-44ef-a9a5-ffbbeaf6b09e I 2014-02-01T16:00:42.102Z
3703a83c-04b4-4ed1-bdc6-b1da083900ea H 2014-02-01T16:00:42.102Z
1e68df32-18a5-4ce1-bb12-41dd3be97e3c G 2014-02-01T16:00:42.102Z
d73b0e03-fd01-4a70-a20f-500e2cf0b3dd F 2014-02-01T16:00:42.102Z
4aba5877-ed0e-4457-800c-522e3a2b72a3 E 2014-02-01T16:00:42.102Z
a90c7dae-ef9f-453b-9416-b7916ace4b5f D 2014-02-01T16:00:42.102Z
fdbfbb6b-d39b-4f15-a309-d105f0caa7a5 C 2014-02-01T16:00:42.101Z
2ed80ac0-768e-40c3-b03a-11b417e2893f B 2014-02-01T16:00:42.101Z
ef8b27db-6102-4ca5-8803-b63bea405be3 A 2014-02-01T16:00:42.098Z

它们为什么按降序排列?以及如何修复我的代码,以便它们默认按升序排列?(显然可导航的设置有asc/desc操作)

1 个回答
  • 你的所有比较中都颠倒了你的逻辑.
    逻辑应始终是"与此相比".

    例如,更改代码的这一行:

    int createdComp = t.created.compareTo( created );
    

    至:

    int createdComp = created.compareTo(t.created);
    

    2023-01-29 21:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有