java list自定义排序
时间: 2023-08-16 11:10:12 浏览: 68
Java 中,可以使用 `Collections` 类中的 `sort` 方法对列表进行排序。如果需要自定义排序规则,可以实现 `Comparator` 接口并传递给 `sort` 方法。
例如,对一个包含字符串的列表按照字符串长度从短到长排序:
```java
List<String> myList = new ArrayList<>();
myList.add("apple");
myList.add("banana");
myList.add("cherry");
myList.add("date");
myList.sort(Comparator.comparing(String::length));
System.out.println(myList);
// 输出: [date, apple, banana, cherry]
```
同样的,可以使用 `sorted` 方法对列表进行排序并返回一个新列表:
```java
List<String> myList = new ArrayList<>();
myList.add("apple");
myList.add("banana");
myList.add("cherry");
myList.add("date");
List<String> newList = myList.stream()
.sorted(Comparator.comparing(String::length))
.collect(Collectors.toList());
System.out.println(newList);
// 输出: [date, apple, banana, cherry]
```
如果需要按照多个条件进行排序,可以链式调用 `thenComparing` 方法:
```java
List<Person> myList = new ArrayList<>();
myList.add(new Person("Alice", 25));
myList.add(new Person("Bob", 30));
myList.add(new Person("Charlie", 20));
myList.add(new Person("David", 25));
myList.sort(Comparator.comparing(Person::getAge)
.thenComparing(Person::getName));
System.out.println(myList);
// 输出: [Person [name=Charlie, age=20], Person [name=Alice, age=25], Person [name=David, age=25], Person [name=Bob, age=30]]
```
其中,`Person` 类需要实现 `Comparable` 接口或者通过传递一个自定义的 `Comparator` 对象来指定排序规则。
阅读全文