将 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);
我已经开始学习 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);