Java 要映射的计时器类
例如,我有一些类Java 要映射的计时器类,java,list,dictionary,collections,java-stream,Java,List,Dictionary,Collections,Java Stream,例如,我有一些类Person class Person { private String firstName; private String lastName; private String street; ... } 此外,我还有一个列表personList,其中包含一些Person对象。目标是将这些对象作为键放入Map personMap,并将new Timer()对象作为值添加。因此每个人都有一个计时器() 我正在努力做下一步: personMap =
Person
class Person {
private String firstName;
private String lastName;
private String street;
...
}
此外,我还有一个列表personList
,其中包含一些Person
对象。目标是将这些对象作为键放入Map personMap
,并将new Timer()
对象作为值添加。因此每个人都有一个计时器()
我正在努力做下一步:
personMap = personList.stream().collect(toMap(person -> person, new Timer()));
但编译器说:不存在类型变量T,U的实例,因此计时器符合函数您必须为键和变量提供函数,其中:
keyMapper-用于生成关键点的映射函数
valueMapper-用于生成值的映射函数
你需要:
Map<Person, Timer> personMap = personList.stream()
.collect(Collectors.toMap(
person -> person, // Function to create a key
person -> new Timer())); // Function to create a value
Map personMap=personList.stream()
.collect(collector.toMap)(
person->person,//创建密钥的函数
人员->新计时器());//函数创建一个值
为了更好地理解,以下是使用同一收集器表示为匿名类的lambda:
personList.stream().collect(Collectors.toMap(
new Function<Person, Person>() { // Function to create a key
@Override
public Person apply(Person person) {
return person; // ... return self
}},
new Function<Person, Timer>() { // Function to create a value
@Override
public Timer apply(Person person) {
return new Timer(); // ... return a new Timer
}}
));
personList.stream().collect(Collectors.toMap(
new Function(){//用于创建密钥的函数
@凌驾
公众人士申请(个人){
返回人;/…返回自己
}},
new Function(){//创建值的函数
@凌驾
公共计时器应用(个人){
返回新计时器();/…返回新计时器
}}
));
toMap的第二个参数是一个函数(FunctionChangenew Timer()
toperson->new Timer()
Map<Person, Timer> map = personList.stream()
.collect(Collectors.toMap(Function.identity(), person -> new Timer()));