前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【错误记录】Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )

【错误记录】Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )

作者头像
韩曙亮
发布2023-03-29 21:28:31
3.8K0
发布2023-03-29 21:28:31
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、报错信息


使用 Comparator 接口 , 对 ArrayList 集合中的元素排序无效 ;

打印之后没有进行排序 ;

错误代码就不贴出来了 , 随便搜索的代码 , 一用就出错 ;

Java

1.7

及以上的版本中 , Comparator 接口 compare 方法的返回值必须是一对相反的数值 , 如

-1

+1

; 不能返回

1

0

;

二、解决方案


Comparator 接口 正确的使用方法 :

代码语言:javascript
复制
        list.sort(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                // 升序排序
                if (o1.age > o2.age) {
                    return 1;
                } else {
                    return -1;
                }
            }
        });

完整代码示例 :

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.Comparator;

public class Sort {

    static class Student{
        String name;
        int age;
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }

        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

    public static void main(String[] args) {
        // 构造对象
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("Tom", 18));
        list.add(new Student("Jerry", 14));
        list.add(new Student("Cat", 20));
        list.add(new Student("Mouse", 19));

        list.sort(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                // 升序排序
                if (o1.age > o2.age) {
                    return 1;
                } else {
                    return -1;
                }
            }
        });

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).toString());
        }
    }
}

执行结果 :

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、报错信息
  • 二、解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档