关于Comparator的使用

Comparator用法

一直以来我还从未自己写过自定义排序,以前以为只要集合中的对象实现Comparable就可以了,所以一直没动手做,今天碰到了,让我头疼了好久
,其实关于自定义排序,用的最多的无非Comparator与Comparable了,我相信Comparable大家应该用的很熟悉,Comparator其实跟able一样,实现一个Compare方法,这个里面写自定义实现的方法

List<Map<String,Object>> list = Lists.newArrayListWithCapacity(page_size);
                HashMap<String, Object> map;
                int i = 1;
                while (i <= page_size&&resultSet.next()) {
                    map = new HashMap<String, Object>();
                    map.put("zh_label",resultSet.getString("zh_label"));
                    map.put("project_no",resultSet.getString("project_num"));
                    map.put("state",resultSet.getString("state"));
                    map.put("progress",resultSet.getString("progress"));
                    i++;
                    list.add(map);
                }
                Collections.sort(list,new Comparator<Map<String,Object>>(){
                    @Override
                    public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                        if (o1.get("state").equals("未完成")||o1.get("state").equals("已完成")&&!o2.get("state").equals("未完成")){
                            return -1;
                        }else{
                            return 1;
                        }
                    }

Collections.sort(list,Comparator

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Comparator 是 Java 提供的一个接口,用于定义两个对象之间的比较规则。可以用于对集合中的元素进行排序或查找等操作。 下面是一个使用 Comparator 接口的示例,假设有一个学生类 Student,包含学生的姓名和年龄属性: ```java public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 现在需要对一组学生对象进行排序,按照年龄从小到大排序。可以使用 Comparator 接口来定义比较规则: ```java import java.util.Comparator; public class AgeComparator implements Comparator<Student> { @Override public int compare(Student s1, Student s2) { return s1.getAge() - s2.getAge(); } } ``` 上面的代码定义了一个 AgeComparator 类,实现了 Comparator 接口,并重写了 compare 方法。在 compare 方法中,比较两个学生对象的年龄大小,如果 s1 的年龄小于 s2,则返回负数;如果 s1 的年龄等于 s2,则返回 0;如果 s1 的年龄大于 s2,则返回正数。 现在可以使用 AgeComparator 对象对一组学生对象进行排序: ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<Student> students = new ArrayList<>(); students.add(new Student("Tom", 18)); students.add(new Student("Jerry", 20)); students.add(new Student("Alice", 19)); Collections.sort(students, new AgeComparator()); for (Student s : students) { System.out.println(s.getName() + " " + s.getAge()); } } } ``` 上面的代码中,先创建了一个包含三个学生对象的 List,然后使用 Collections.sort 方法对这个 List 进行排序,传入的第二个参数是一个 AgeComparator 对象,表示按照年龄从小到大排序。最后遍历排序后的 List,输出每个学生的姓名和年龄。 运行上面的代码,输出结果如下: ``` Tom 18 Alice 19 Jerry 20 ``` 可以看到,按照年龄从小到大排序后,学生对象的顺序发生了变化。这就是使用 Comparator 接口的一个简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值