当前位置: 代码网 > it编程>编程语言>Java > Java List排序实例代码详解

Java List排序实例代码详解

2025年05月21日 Java 我要评论
一、自然排序自然排序是按照对象的自然顺序进行排序,例如数字的大小或字符串的字典序。对于实现了comparable接口的类,可以直接使用collections.sort()或list.sort()方法进

一、自然排序

自然排序是按照对象的自然顺序进行排序,例如数字的大小或字符串的字典序。对于实现了 comparable 接口的类,可以直接使用 collections.sort() 或 list.sort() 方法进行排序。

import java.util.arraylist;
import java.util.collections;
import java.util.list;

public class naturalsortexample {
    public static void main(string[] args) {
        list<integer> numbers = new arraylist<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);

        // 使用 collections.sort() 排序
        collections.sort(numbers);
        system.out.println("排序后的数字列表: " + numbers);

        list<string> words = new arraylist<>();
        words.add("apple");
        words.add("banana");
        words.add("cherry");

        // 使用 list.sort() 排序
        words.sort(null);
        system.out.println("排序后的单词列表: " + words);
    }
}

二、自定义排序规则

当需要按照特定规则排序时,可以实现 comparator 接口来自定义排序规则。

import java.util.arraylist;
import java.util.collections;
import java.util.comparator;
import java.util.list;

public class customsortexample {
    public static void main(string[] args) {
        list<person> people = new arraylist<>();
        people.add(new person("alice", 30));
        people.add(new person("bob", 25));
        people.add(new person("charlie", 35));

        // 按年龄升序排序
        collections.sort(people, new comparator<person>() {
            @override
            public int compare(person p1, person p2) {
                return integer.compare(p1.getage(), p2.getage());
            }
        });

        system.out.println("按年龄升序排序:");
        for (person person : people) {
            system.out.println(person);
        }

        // 按年龄降序排序
        collections.sort(people, new comparator<person>() {
            @override
            public int compare(person p1, person p2) {
                return integer.compare(p2.getage(), p1.getage());
            }
        });

        system.out.println("按年龄降序排序:");
        for (person person : people) {
            system.out.println(person);
        }
    }
}

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;
    }

    @override
    public string tostring() {
        return "person{name='" + name + "', age=" + age + '}';
    }
}

三、使用 lambda 表达式简化 comparator

从 java 8 开始,可以使用 lambda 表达式来简化 comparator 的实现。

import java.util.arraylist;
import java.util.collections;
import java.util.comparator;
import java.util.list;

public class lambdasortexample {
    public static void main(string[] args) {
        list<person> people = new arraylist<>();
        people.add(new person("alice", 30));
        people.add(new person("bob", 25));
        people.add(new person("charlie", 35));

        // 使用 lambda 表达式按年龄升序排序
        people.sort((p1, p2) -> integer.compare(p1.getage(), p2.getage()));

        system.out.println("按年龄升序排序:");
        people.foreach(system.out::println);

        // 使用 lambda 表达式按年龄降序排序
        people.sort((p1, p2) -> integer.compare(p2.getage(), p1.getage()));

        system.out.println("按年龄降序排序:");
        people.foreach(system.out::println);
    }
}

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;
    }

    @override
    public string tostring() {
        return "person{name='" + name + "', age=" + age + '}';
    }
}

四、多条件排序

可以结合多个条件进行排序,例如先按年龄排序,再按姓名排序。

import java.util.arraylist;
import java.util.comparator;
import java.util.list;

public class multiconditionsortexample {
    public static void main(string[] args) {
        list<person> people = new arraylist<>();
        people.add(new person("alice", 30));
        people.add(new person("bob", 25));
        people.add(new person("charlie", 30));
        people.add(new person("david", 25));

        // 按年龄升序,年龄相同则按姓名字典序排序
        people.sort(comparator.comparingint(person::getage)
                .thencomparing(person::getname));

        system.out.println("按年龄升序,年龄相同按姓名排序:");
        people.foreach(system.out::println);
    }
}

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;
    }

    @override
    public string tostring() {
        return "person{name='" + name + "', age=" + age + '}';
    }
}

五、总结

java 提供了多种方式对 list 进行排序,包括自然排序和自定义排序。通过实现 comparable 接口或使用 comparator,可以灵活地定义排序规则。java 8 的 lambda 表达式进一步简化了排序代码,使代码更加简洁易读。

到此这篇关于java list排序的文章就介绍到这了,更多相关java list 排序内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com