将 Java 8 的功能降级为 Java 7

Downgrading function of Java 8 to Java 7

我已经开始学习 Java 当前版本 1.8。这意味着我使用了此版本中出现的功能,但我不知道之前的情况...

我希望有人告诉我如何在 java 7 中做同样的事情:

我有一个包含浮点值属性的 Person 对象。我想从 "Person" 的列表中找到此值的 min/max 值。这就是我在 Java 8 中使用 parallelStream 所做的:

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

要找到那个值最大化的人,您可以在列表上写一个循环,然后检查每个值。

 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

您可以使用普通的 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);

没测试过:

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