Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。java
下面这个例子就是使用"匿名类写法"与"Lambda语法"进行作了一个对比,代码不只简洁,并且还可读。ide
public static void main(String[] args) { List<String> list = Arrays.asList(new String[]{"2", "1", "3"}); System.out.println(list); //排序; 使用匿名类写法 Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareTo(o2); } }); System.out.println(list); //排序; 使用lambda写法 Collections.sort(list,(str1,str2) -> str2.compareTo(str1)); System.out.println(list); }
线程使用lambda举例:函数
public static void main(String[] args) { /** * 线程举例 * */ //传统写法 Thread td = new Thread(new Runnable() { @Override public void run() { System.out.println("hello world"); } }); td.start(); //lambda写法(简洁写法) Thread td1 = new Thread(() -> System.out.println("hello lambda")); td1.start(); //lambda写法(完整写法) Thread td2 = new Thread(() -> { System.out.println("hello lambda(*^▽^*)"); }); td2.start(); }
接口实现接口中方法使用lambda语法:线程
public static void main(String[] args) { //lambda简洁写法 MathOperation mo1 = (a,b) -> a+b; //lambda完整写法 MathOperation mo2 = (c,d) -> { System.out.println("aaaa"); return c+d; }; System.out.println(mo1.operation(1,2)); System.out.println(mo2.operation(1,2)); } interface MathOperation{ int operation(int a,int b); //String operation1(String a,String b); }
使用lambda实现集合遍历中操做两种方式: 转大写举例设计
@Test public void convertTest(){ List<String> collected = new ArrayList<>(); collected.add("java"); collected.add("holle"); collected = collected.stream().map(string -> string.toUpperCase()).collect(Collectors.toList()); System.out.println(collected); } @Test public void convertTest2(){ List<String> collected = new ArrayList<>(); collected.add("java"); collected.add("holle"); //collected = collected.stream().map(String::toUpperCase).collect(Collectors.toList()); collected = collected.stream().map(String::toUpperCase).collect(Collectors.toCollection(ArrayList::new)); System.out.println(collected); }
点赞, 关注我呀~~~code