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