我已经开始学习当前版本1.8的Java。这意味着我使用了这个版本中出现的功能,而且我不知道事情发生的原因......
我希望有人告诉我如何在java 7中完成相同的操作:
我有一个包含浮点值属性的Person对象。我想从" Person"的列表中找到该值的最小值/最大值。这就是我在Java 8中使用parallelStream的方式:
Person max = people.parallelStream().max(Comparator.comparing(p-> ((Person) p).getFloatValue())).get()
答案 0 :(得分:1)
要获得最大化该值的人,可以在列表上写一个循环,然后检查每个值。
Person maxPerson = people.get(0); // get's the first person
for(int i = 1; i < people.size(); i ++) // loop over list, finding max
{
if(people.get(i).getFloatValue() > maxPerson.getFloatValue())
maxPerson = people.get(i);
}
// now maxPerson stores the person where this value is the highest
答案 1 :(得分:0)
您可以使用plain for循环和if-else检查来执行此操作。 更优雅的方法是使用Guava Ordering。
Ordering<Person> personOrdering = new Ordering<Person>() {
@Override
public int compare(Person left, Person right) {
return Floats.compare(left.getFloatValue(), right.getFloatValue());
}
};
Person max = personOrdering.max(list);
Person min = personOrdering.min(list);
答案 2 :(得分:0)
没试过它:
Comparator<Person> comparator = new Comparator<Person>() {
public int compare(People o1, Person o2) {
return ((Float)o1.getFloatValue()).compareTo(o2.getFloatValue());
}
};
Person max = Collections.max(persons, comparator);
Person min = Collections.min(persons, comparator);