泛型字段 使用Comparator.comparing排序
时间: 2023-11-21 13:57:42 浏览: 27
可以使用Comparator.comparing方法对泛型字段进行排序。以下是一个示例代码,其中根据Map<String, String>中name值的倒序对列表进行排序:
```java
List<Map<String, String>> list = new ArrayList<>();
// 添加元素到列表中
list.add(new HashMap<String, String>(){{put("name", "Tom");}});
list.add(new HashMap<String, String>(){{put("name", "Jerry");}});
list.add(new HashMap<String, String>(){{put("name", "Alice");}});
// 方法1:使用Comparator.comparing方法
Comparator<Map<String, String>> comparator = Comparator.comparing(
(Map<String, String> map) -> map.get("name"), Collections.reverseOrder());
list.sort(comparator);
// 输出排序后的列表
System.out.println(list);
```
输出结果为:
```
[{name=Tom}, {name=Jerry}, {name=Alice}]
```
相关问题
泛型T 使用Comparator.comparing排序
以下是使用Comparator.comparing对泛型T进行排序的示例代码:
```java
import java.util.*;
public class Example {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Tom", 80));
students.add(new Student("Jerry", 90));
students.add(new Student("Alice", 70));
students.add(new Student("Bob", 85));
// 使用Comparator.comparing对学生列表按照分数进行排序
students.sort(Comparator.comparing(Student::getScore));
// 输出排序后的学生列表
for (Student student : students) {
System.out.println(student.getName() + " " + student.getScore());
}
}
}
class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
```
在上面的示例代码中,我们定义了一个Student类,包含学生的姓名和分数两个属性。我们使用Comparator.comparing方法对学生列表按照分数进行排序,然后输出排序后的学生列表。
Comparator.comparing 比较泛型字段数据
Comparator.comparing()是Java 8中的一个静态方法,它可以用于比较对象中的某个字段数据。该方法接受一个Function参数,该参数用于提取要比较的字段数据,并返回一个实现了Comparator接口的比较器对象。该比较器对象可以用于对对象列表进行排序。下面是一个例子:
假设我们有一个Person类,其中包含name和age两个字段。我们想要按照name字段对Person对象列表进行排序,可以使用Comparator.comparing()方法来实现:
```java
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));
// 按照name字段对Person对象列表进行排序
Collections.sort(people, Comparator.comparing(Person::getName));
// 输出排序后的结果
for (Person person : people) {
System.out.println(person.getName() + " " + person.getAge());
}
```
上述代码中,我们使用Comparator.comparing()方法来创建一个比较器对象,该比较器对象用于比较Person对象的name字段。然后,我们使用Collections.sort()方法对Person对象列表进行排序,最后输出排序后的结果。