使用Comparator实现集合排序

对任意类型集合对象进行整体排序,排序时将此接口的实现传递给Collections.sort方法或者Arrays.sort方法排序.

实现int compare(T o1, T o2);方法,返回正数,零,负数各代表大于,等于,小于。

用于排序的示例代码如下:

实体类:Student

package com.zjx;

public class Student {

    private String username;

    private int age;

    public Student(String username, int age) {
        this.username = username;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

用于排序的list集合

  List<Student> students = new ArrayList<Student>() {{
            add(new Student("张三", 12));
            add(new Student("张三", 13));
            add(new Student("张三", 34));
            add(new Student("李四", 54));
            add(new Student("李四", 12));
            add(new Student("王五", 23));
            add(new Student("王五", 21));
        }};
方法一
  //升序
 Collections.sort(students, new Comparator<Student>() {
         @Override
         public int compare(Student o1, Student o2) {
            return o1.getAge() - o2.getAge();
         }
 });
 
 
  //降序
 Collections.sort(students, new Comparator<Student>() {
         @Override
         public int compare(Student o1, Student o2) {
            return o2.getAge() - o1.getAge();
         }
 });
方法二
升序
Collections.sort(students,(o1,o2) ->(o1.getAge()-o2.getAge()));

降序
Collections.sort(students,(o1,o2) ->(o2.getAge()-o1.getAge()));
方法三

Java8实现方式

 Comparator<Student> comparator = Comparator.comparing(Student::getAge);
 
 //升序
 List<Student> list = students.stream().sorted(comparator).collect(Collectors.toList());
 
 //倒序
 List<Student> list = students.stream().sorted(comparator.reversed()).collect(Collectors.toList());
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值