我有一个代码有两种不同的方法,但其中一个正在工作,另一个没有完成,我没有得到什么错误。 下面是代码:从列表中获取平均数据使用Collectors.averagingInt java
public class CollectorOperations {
public int averageAgeInt(List<Person> persons) {
return persons.stream()
.collect(Collectors.averagingInt(person -> person.getAge()));
}
public double averageAgeDouble(List<Person> personList, int i) {
return personList.stream()
.collect(Collectors.averagingInt(person -> person.getAge()));
}
}
class Person {
private String name;
private String lastName;
private int age;
public Person(String name, String lastName) {
this.name = name;
this.lastName = lastName;
}
public Person(String name, String lastName, int age) {
this.name = name;
this.lastName = lastName;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", lastName='" + lastName + '\'' +
'}';
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
这两种方法之间的唯一区别是返回类型,当返回类型为int
我不能从lambda表达式得到person.age()
,但是当我改变返回类型为double
它的工作。
P.S. 对不起,我的英语。
'Collectors.averagingInt'提供'Double',这对于平均值来说完全有意义,那么为什么你会期望int? – Joel