Java | 快排sort | Comparator

java的实体bean结构

import java.util.ArrayList;
import java.util.List;
 
public class Human {
    private String name;
    private int age;
 
    public Human() {
    }
 
    public Human(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    @SuppressWarnings("serial")
    public static List<Human> getAInitHumanList() {
        return new ArrayList<Human>() {
            {
                add(new Human("guorao", 10));
                add(new Human("mako", 12));
                add(new Human("hel", 30));
                add(new Human("lin", 28));
            }
        };
    }
 
    @Override
    public String toString() {
        return this.getName() + ":" + this.getAge();
    }
}

第一种:实现Comparator接口的类的对象作为sort的入参

public class HumanComparetor implements Comparator<Human> {
    @Override
    public int compare(Human h1, Human h2) {
        if (h1.getAge() > h2.getAge()) {
            return 1;
        } else if (h1.getAge() == h2.getAge()) {
            return 0;
        } else {
            return -1;
        }
    }
}
    public static void main(String[] args) {
        List<Human> humans = Human.getAInitHumanList();
        Collections.sort(humans, new HumanComparetor());
        System.out.println(humans);
    }


第二种:在方法的局部使用局部类,原理和第一种差不多

    public static void main(String[] args) {
        List<Human> humans = Human.getAInitHumanList();
        //方法内-局部类
        class HumanComparetor implements Comparator<Human> {
            @Override
            public int compare(Human h1, Human h2) {
                return h1.getAge() - h2.getAge();
            }
        }
        Collections.sort(humans, new HumanComparetor());
        System.out.println(humans);
    }

第三种:基于第二种方法,局部类改为匿名类

    public static void main(String[] args) {
        List<Human> humans = Human.getAInitHumanList();
        //匿名类
        Collections.sort(humans, new Comparator<Human>() {
            @Override
            public int compare(Human h1, Human h2) {
                return h1.getAge() - h2.getAge();
            }
        });
        System.out.println(humans);
    }

第四种:使用lamdba表达式->这种形式

    public static void main(String[] args) {
        List<Human> humans = Human.getAInitHumanList();
        //lamdba 表达式 ->
        Collections.sort(humans, (Human h1, Human h2) -> h1.getAge() - h2.getAge());
        System.out.println(humans);
    }


第五种:借助Comparator和lamdba表达式多条件排序

    public static void main(String[] args) {
        List<Human> humans = Human.getAInitHumanList();
        lamdba 表达式 ::
        Collections.sort(humans, Comparator.comparing(Human::getAge).thenComparing(Human::getName));
        System.out.println(humans);
    }


第六种:调用方式和第五种有区别,原理一样

    public static void main(String[] args) {
        List<Human> humans = Human.getAInitHumanList();
        //直接用list.sort
        humans.sort(Comparator.comparing(Human::getAge).thenComparing(Human::getName));
        System.out.println(humans);
    }


原文:https://blog.csdn.net/heliangb46/article/details/77188939 
 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java provides the Arrays class, which has a sort method that allows you to sort arrays. To customize the sort order, you can use a Comparator. A Comparator is an interface that defines a comparison function. You can create a Comparator implementation and pass it as a parameter to the Arrays.sort() method. The Comparator implementation should override the compare() method to define the sorting logic. Here's an example of sorting an array of objects using a Comparator: ```java import java.util.Arrays; import java.util.Comparator; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } public class Main { public static void main(String[] args) { Person[] people = { new Person("Alice", 25), new Person("Bob", 20), new Person("Charlie", 30) }; // Sort by age using a custom comparator Arrays.sort(people, new Comparator<Person>() { @Override public int compare(Person p1, Person p2) { return Integer.compare(p1.getAge(), p2.getAge()); } }); // Print sorted array for (Person person : people) { System.out.println(person.getName() + " - " + person.getAge()); } } } ``` In this example, we have a Person class with name and age attributes. We create an array of Person objects and sort them based on the age using a custom Comparator implementation. The compare() method compares the ages of two Person objects and returns the result of the comparison. After sorting, the array will be printed in ascending order based on age.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值