乌海黑 2023-12-02 11:18 采纳率: 33.3%
浏览 4

comparator 集合’ sort

comparator比较器中的compare方法的问题
为什么第一段代码中在compare函数里面相减的是price,sort函数比较的就是price,在第二段代码中相减的是name,sort函数比较的就是name,
我想说的是compare返回的不都是一个int类型的整数吗为什么可以决定sort比较的属性。

//(2)price 从小到大
 Arrays.sort(books, new Comparator() {
//这里是对 Book 数组排序,因此 o1 和 o2 就是 Book 对象
     @Override
     public int compare(Object o1, Object o2) {
         Book book1 = (Book) o1;
         Book book2 = (Book) o2;
         double priceVal = book2.getPrice() - book1.getPrice();
 //如果发现返回结果和我们输出的不一致,就修改一下返回的 1 和 -1
         if(priceVal > 0) {
             return -1;
         } else if(priceVal < 0) {
             return 1;
         } else {
              return 0;
            }
         }
 });

//(3)按照书名长度从大到小
Arrays.sort(books, new Comparator() {
//这里是对 Book 数组排序,因此 o1 和 o2 就是 Book 对象
    @Override
    public int compare(Object o1, Object o2) {
        Book book1 = (Book) o1;
        Book book2 = (Book) o2;
      //要求按照书名的长度来进行排序
        return book2.getName().length() - book1.getName().length();
}
})
  • 写回答

3条回答 默认 最新

  • 皮蛋不吃粥 2023-12-02 11:28
    关注

    arrays.sort里面传的比较器就是你的排序规则,按照你的规则来排序,>0前面大排在最前面;=0;<0

    评论

报告相同问题?

问题事件

  • 创建了问题 12月2日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀