Java 8到Java 7的降级功能
我已经开始学习Java的当前版本1.8。这意味着我使用这个版本中出现的函数,我不知道以前是怎么回事 我希望有人告诉我如何在java 7中实现这一功能,请: 我有一个Person对象,它包含一个float-value属性。我想从“Person”列表中找到该值的最小/最大值。这是我在Java 8中使用parallelStream时所做的:Java 8到Java 7的降级功能,java,java-7,java-stream,Java,Java 7,Java Stream,我已经开始学习Java的当前版本1.8。这意味着我使用这个版本中出现的函数,我不知道以前是怎么回事 我希望有人告诉我如何在java 7中实现这一功能,请: 我有一个Person对象,它包含一个float-value属性。我想从“Person”列表中找到该值的最小/最大值。这是我在Java 8中使用parallelStream时所做的: Person max = people.parallelStream().max(Comparator.comparing(p-> ((Person) p)
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
Person-maxPerson=people.get(0);//第一个人是谁
for(inti=1;imaxPerson.getFloatValue())
maxPerson=people.get(i);
}
//现在,maxPerson存储此值最高的人员
您可以使用普通for循环和if-else检查来执行此操作。
更优雅的方法是使用
Ordering personOrdering=new Ordering(){
@凌驾
公共整数比较(左、右){
返回Floats.compare(left.getFloatValue(),right.getFloatValue());
}
};
Person max=personOrdering.max(列表);
Person min=personOrdering.min(列表);
没有测试它:
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);
比较器比较器=新比较器(){
公共整数比较(人员o1,人员o2){
返回((Float)o1.getFloatValue()).compareTo(o2.getFloatValue());
}
};
Person max=Collections.max(persons,comparator);
Person min=Collections.min(persons,comparator);
您可以使用
进行
循环,我想是的,但在java 7中没有“正确”的方法?这是正确的方法,因为java 7没有java 8的功能特性。否则我们就不需要Java8了。不要使用parallelStream。它会创建耗时的独立线程。它只在某些情况下有用,但在这里肯定不有用。使用just stream()Ok good know for the future:)我认为这是最简单的解决方案,即使其他解决方案也很有趣!谢谢
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);