brian661
brian661

Reputation: 548

using Arrays.sort with Lambda

I am trying to learning and switch to Java 8 from 7.
While I got problems when switch Arrays.sort, which gave my error: type is not applicable.
I knows there are some better ways to do the same task, but I would like to use the same function to have a better understanding.
Thanks in advance.

package src;

import java.util.Arrays;
import java.util.Comparator;

public class Java8Learning {
    public static void main(String[] args){
        Integer[] numbers = {4,5,3,2,6,1};
        -------java 7 ---------
        Arrays.sort(numbers, new Comparator<Integer>() {
            @Override
            public int compare(Integer firstNumber, Integer secondNumber){
                System.out.print("comparing :"+ firstNumber + " and " + secondNumber);
                return Integer.compare(firstNumber, secondNumber);
            }
        });
        -------java 8 ---------
        // it gave me error
        //The method sort(T[], Comparator<? super T>) in the type Arrays is not applicable for the arguments (Integer[], (<no type> firstNumber, <no type> secondNumber) -> {})
        Arrays.sort(numbers, (firstNumber, secondNumber) -> 
                                 {  System.out.print("comparing :"+ firstNumber + " and " + secondNumber);
                                     Integer.compare(firstNumber, secondNumber);
                                 });

    }
}

Upvotes: 0

Views: 4993

Answers (1)

brian661
brian661

Reputation: 548

Missed a return before the Integer.compare

Arrays.sort(numbers, (firstNumber, secondNumber) -> 
                     {  System.out.print("comparing :"+ firstNumber + " and " + secondNumber);
                        return Integer.compare(firstNumber, secondNumber);
                     });

Upvotes: 5

Related Questions