Java Stream How to - Create comparator created by inner class and Lambda variable








Question

We would like to know how to create comparator created by inner class and Lambda variable.

Answer

import java.util.ArrayList;
import java.util.List;
import java.util.Comparator;
//  w w  w  . j a  va 2  s.co  m
public class Main {

  public static void main(String[] args) {
    // setup
    List<Integer> list = new ArrayList<Integer>();
    list.add(4);
    list.add(3);

    // classic way
    list.sort(new Comparator<Integer>() {

      @Override
      public int compare(Integer a, Integer b) {
        return a - b;
      }
    });
    System.out.println(list);

    // lambda way
    Comparator<Integer> lambdaComparator = (Integer a, Integer b) -> b - a;
    list.sort(lambdaComparator);
    System.out.println(list);

  }
}

The code above generates the following result.