面试题答案
一键面试import java.util.*;
import java.util.stream.Collectors;
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;
}
}
public class Main {
public static void main(String[] args) {
List<Person> personList = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Alice", 28)
);
Map<String, Integer> resultMap = personList.stream()
.collect(Collectors.toMap(
Person::getName,
Person::getAge,
Math::max
));
System.out.println(resultMap);
}
}
上述代码实现了将List<Person>
转换为Map<String, Integer>
,如果存在同名的Person
,取age
较大者。主要步骤如下:
- 使用
stream
方法将List
转换为流。 - 使用
Collectors.toMap
收集器,第一个参数Person::getName
表示以Person
的name
作为键;第二个参数Person::getAge
表示以Person
的age
作为值;第三个参数Math::max
用于处理同名情况,取较大的age
值。