将Java 8降级为Java 7

时间:2016-08-11 10:42:49

标签: java java-7 java-stream

我已经开始学习当前版本1.8的Java。这意味着我使用了这个版本中出现的功能,而且我不知道事情发生的原因......

我希望有人告诉我如何在java 7中完成相同的操作:

我有一个包含浮点值属性的Person对象。我想从" Person"的列表中找到该值的最小值/最大值。这就是我在Java 8中使用parallelStream的方式:

Person max = people.parallelStream().max(Comparator.comparing(p-> ((Person) p).getFloatValue())).get() 

3 个答案:

答案 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);