Java中如何使用方法引用在集合中找到最大值?

方法引用在lambda表达式中提供了一种引用方法而不执行它的方法。它需要一个包含兼容函数接口的目标类型上下文。

语法

<Class-Name> :: <Static-Method-Name>

在下面的示例中,我们可以使用方法引用找出ArrayList的最大值

示例

import java.util.*;

class MyClass {
   private int val;
      MyClass(int v) {
      val = v;
   }
   int getVal() {
      return val;
   }
}
public class MethodReferenceMaxValueTest {   
      static int compareMaxValue(MyClass a, MyClass b) {
      return a.getVal() - b.getVal();
   }
   public static void main(String args[]) {      
         ArrayList<MyClass> al = new ArrayList<MyClass>();
      al.add(new MyClass(10));
      al.add(new MyClass(30));
      al.add(new MyClass(25));
      al.add(new MyClass(15));
      al.add(new MyClass(40));
      al.add(new MyClass(35));
      MyClass maxValObj = Collections.max(al, MethodReferenceMaxValueTest :: compareMaxValue);
      System.out.println("最大值为: " + maxValObj.getVal());
   }
}

输出结果

最大值为: 40
猜你喜欢