6-3 lambda表达式

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

public class LengthComparator implements Comparator<String> {

    @Override
    public int compare(String first, String second) {
        System.out.println("===");
        return second.length() - first.length();
    }

    public static void main(String[] args) {
        
        String[] firend = {"pa","eee","pmee"};
//        Arrays.sort(firend);
        Arrays.sort(firend, new LengthComparator()); 
//        Arrays.sort(firend, (String first, String second) -> first.length() - second.length()); 
//        Arrays.sort(firend, (String first, String second) -> { if (first.length()>second.length()) {return 1;} else{return 0;}} ); 
//        Arrays.sort(firend, (first, second) -> first.length() - second.length()); 
        
        
        for (String string : firend) {
            System.out.println(string); 
        }
        
    }
    
    
    /**
     * lambda表达式
     * 
     * 
     * Java是一种强类型的语言
     * 
     *1. 语法:
     * 
     * 参数  箭头(->)表达式   如果表达式无法完成计算可以放在{}里
     * 
     * 例如: (String first, String second) -> first.length() - second.length()
     *               (String first, String second) -> { if (first.length()>second.length()) {return 1;} else{return 0;}}
     * 
     * 即使没有参数,也要提供括号 () - > {for(int i = 0;i< 5 ;i++){System.out.println(i);}}
     * 
     *如果可以推导出参数类型可以将其忽略
     * Comparator<String> com =  ( first, second) -> first.length() - second.length()
     * 
     * 
     * 2.
     * Arrays.sort(firend, new LengthComparator());   sort方法会调用一个new LengthComparator()对象实例(compare不是静态方法),
     * 会不断调用重写的compare方法,直到排序完成(重写compare方法,自定义一个排序方式)。
     * 
     */
    
}

相关推荐