java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java List.sort()自定义排序规则

Java中List.sort()自定义排序规则几种方式

作者:五道书童

Java中可通过Comparator匿名类、Lambda表达式、静态方法、自定义对象及实现Comparable接口实现List排序,这篇文章主要介绍了Java中List.sort()自定义排序规则几种方式,需要的朋友可以参考下

在Java中,你可以通过以下几种方式为List.sort()方法自定义排序规则:

1. 使用Comparator匿名内部类

List<String> list = Arrays.asList("banana", "apple", "pear", "orange");
list.sort(new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length(); // 按字符串长度排序
    }
});

2. 使用Lambda表达式(Java 8+)

List<String> list = Arrays.asList("banana", "apple", "pear", "orange");
list.sort((s1, s2) -> s1.length() - s2.length()); // 按字符串长度排序

3. 使用Comparator的静态方法(Java 8+)

List<String> list = Arrays.asList("banana", "apple", "pear", "orange");

// 按字符串长度排序
list.sort(Comparator.comparingInt(String::length));

// 先按长度,再按字母顺序
list.sort(Comparator.comparingInt(String::length).thenComparing(Comparator.naturalOrder()));

4. 自定义对象排序示例

class Person {
    String name;
    int age;
    
    // 构造方法、getter/setter省略
}

List<Person> people = Arrays.asList(
    new Person("Alice", 25),
    new Person("Bob", 20),
    new Person("Charlie", 30)
);

// 按年龄排序
people.sort(Comparator.comparingInt(Person::getAge));

// 按年龄降序
people.sort(Comparator.comparingInt(Person::getAge).reversed());

// 多条件排序:先按姓名,再按年龄
people.sort(Comparator.comparing(Person::getName).thenComparingInt(Person::getAge));

5. 实现Comparable接口

如果要对自定义类进行自然排序,可以让类实现Comparable接口:

class Person implements Comparable<Person> {
    String name;
    int age;
    
    @Override
    public int compareTo(Person other) {
        return this.age - other.age; // 按年龄排序
    }
}

List<Person> people = new ArrayList<>();
// 添加元素...
people.sort(null); // 使用自然排序

注意事项

以上方法可以根据具体需求选择使用,Java 8引入的Lambda和Comparator方法使代码更加简洁易读。

总结

到此这篇关于Java中List.sort()自定义排序规则几种方式的文章就介绍到这了,更多相关Java List.sort()自定义排序规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文