Collectors.minBy使用样例
时间: 2024-03-17 20:37:54 浏览: 18
Collectors.minBy是Java 8中的一个收集器(Collector),它用于根据指定的比较器选择最小的元素。下面是一个使用Collectors.minBy的示例:
假设我们有一个Person类,包含name和age两个属性。我们想要找到年龄最小的人。
```java
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 20)
);
Optional<Person> youngestPerson = people.stream()
.collect(Collectors.minBy((p1, p2) -> p1.getAge() - p2.getAge()));
youngestPerson.ifPresent(person -> System.out.println("Youngest person: " + person.getName()));
}
}
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;
}
}
```
在上面的示例中,我们首先创建了一个包含三个Person对象的列表。然后,我们使用流(Stream)对列表进行操作。通过调用`collect`方法,并传递`Collectors.minBy`作为参数,我们可以得到一个Optional对象,其中包含年龄最小的Person对象。最后,我们使用`ifPresent`方法来判断Optional对象是否存在值,并打印出最小年龄的人的姓名。