【发布时间】:2017-09-25 20:25:52
【问题描述】:
我有两个类的结构如下:
public class Company {
private List<Person> person;
...
public List<Person> getPerson() {
return person;
}
...
}
public class Person {
private Double age;
...
public Double getAge() {
return age;
}
...
}
基本上Company类有一个Person对象的List,每个Person对象都可以得到一个Age值。
如果我得到了 Person 对象的 List,有没有一种好方法可以使用 Java 8 来找到所有 Person 对象中的 Age 中值(Stream 不支持中值,但还有其他方法吗)?
Double medianAge;
if(!company.getPerson().isEmpty) {
medianAge = company.getPerson() //How to do this in Java 8?
}
【问题讨论】:
-
最简单的方法,不是最高效的:对列表进行排序,找到中间元素。
-
你认为为什么需要使用流?
-
@JoeC Stream 刚刚被提到在我的构建中可以很好地使用,所以我想知道在当前技术中是否还有其他东西可以用于中值。谢谢。
-
Stream 简化了需要遍历所有元素的任务。在中位数的情况下,您只需要确保元素已排序并选择中间的一个或两个中间的。
-
如果使用 Guava,则无需重新发明轮子:github.com/google/guava/wiki/…