Java Stream How to - Use custom lambda comparator for Arrays.sort method








Question

We would like to know how to use custom lambda comparator for Arrays.sort method.

Answer

import java.util.Arrays;
/* ww w.ja  va 2s. c  om*/
public class Main {
  public static void main(String[] args) {
    String[] array = { "Java", "C#", "Scala", "Basic", "C++", "Ruby", "Pyton",
        "Perl", "Haskell", "Jet" };
    System.out
        .println("\nStrings that contain ?e? first, everything else second: ");
    Arrays.sort(array, (s1, s2) -> {
      if (s1.contains("e") && s2.contains("e")) {
        return 0;
      } else if (s1.contains("e")) {
        return -1;
      } else {
        return 1;
      }
    });
    Arrays.asList(array).forEach(System.out::println);
  }
}

The code above generates the following result.