Java8最大的變化是引入了Lambda表達式。java
Lambda表達式:一種緊湊的、傳遞行爲的方式。dom
Lambda語法
包含三個部分函數
- 一個括號內用逗號分隔的形式參數,參數是函數式接口裏面方法的參數
- 一個箭頭符號:->
- 方法體,能夠是表達式和代碼塊,方法體函數式接口裏面方法的實現,若是是代碼塊,則必須用{}來包裹起來,且須要一個return 返回值,但有個例外,若函數式接口裏面方法返回值是void,則無需{}
List遍歷改造
本來的方法遍歷Listspa
private void testPrint(List<String> list) { for (String str : list) { Systrm.out.println(str); } }
改造後code
public void listPrint( List<String> list) { list.forEach(str -> System.out.println(str)); // list.forEach(System.out::println); }
統計個數接口
改造前it
public void testCount (List < String > list) { int count = 0; for (String str : list) { if (str.contains("xiao")) { count++; } } System.out.println(count); }
改造後io
public void testCount(List<String> list) { long count = list.stream().filter(str -> str.contains("xiao")).count(); System.out.println(count); }
Stream的相關方法
Stream的生成:一、Stream接口 二、Collection接口class
一、Stream接口test
Stream.of("1","3").forEach(System.out::println);
Stream.generate(()->Math.random()).limit(3).forEach(System.out::println);
Stream.iterate(1,i->i+1).limit(10).forEach(System.out::println);
二、Collection接口,使用stream()方法
list.stream()
Stream的使用:
一、distinct: 對於Stream中包含的元素進行去重操做(去重邏輯依賴元素的equals方法),新生成的Stream中沒有重複的元素;