Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8到Java 7的降级功能_Java_Java 7_Java Stream - Fatal编程技术网

Java 8到Java 7的降级功能

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)

我已经开始学习Java的当前版本1.8。这意味着我使用这个版本中出现的函数,我不知道以前是怎么回事

我希望有人告诉我如何在java 7中实现这一功能,请:

我有一个Person对象,它包含一个float-value属性。我想从“Person”列表中找到该值的最小/最大值。这是我在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
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);