声明:此处只做记录,仅供个人查证,勿赞勿评(不要赞,不要评论)
语法:(parameters) -> expression 或 (parameters) ->{ statements; }
(1):排序比较
常规写法: List<String> names = Arrays.asList("hdf", "fasf", "sdfd", "dee"); Collections.sort(names, new Comparator<String>() { @Override public int compare(String a, String b) { return b.compareTo(a); } });使用Collection的静态方法sort,传入集合和比较器,比较器使用匿名类完成,
lambda写法:
(1) Collections.sort(names,(String::compareTo)); (2) Collections.sort(names,(String a,String b)-> a.compareTo(b)); (3) Collections.sort(names,(String a,String b)-> { return a.compareTo(b); });第一种写法最为简单,同样传入一个集合,(String::compareTo)的写法在这里,java8会自动帮你调用String类的内部方法comparedTo对集合的数据进行排序。
第二种方法和第三种方法是java8提供的一种更为简洁的写法,其中类型标识也可以去掉,java8会自动帮你推导出参数类型,如此,代码将会更加简洁
(2):for循环
常规写法:
List<String> names = Arrays.asList("hdf", "fasf", "sdfd", "dee"); for (String name : names){ System.out.println(); }lambda写法:
List<String> names = Arrays.asList("hdf", "fasf", "sdfd", "dee"); names.forEach(name -> System.out.println(name));java8之前,在一个接口中,我们定义的都是一些抽象的额方法,在java8中,我们可以在一个接口中使用default关键字定义除抽象方法意外的使用非抽象方法,可以供子类使用。
例如:
public interface UsrtImpl { void test(); default void test2(){ System.out.println("非抽象方法"); } }其中test2()可以直接被实现了UsrImpl接口的类使用。
函数式接口:指仅仅包含一个抽象方法的接口,