public static void main(String[] args) { List<Student> stuList = new ArrayList<Student>(); Student st1 = new Student("123","aaa"); Student st2 = new Student("234","bbb"); Student st3 = new Student("345","ccc"); Student st4 = new Student("345","ccc"); stuList.add(st1); stuList.add(st2); stuList.add(st3); stuList.add(st4); //1.提取出list對象中的一個屬性 List<String> stIdList1 = stuList.stream() .map(Student::getId) .collect(Collectors.toList()); stIdList1.forEach(s -> System.out.print(s+" ")); System.out.println(); System.out.println("----------"); //2.提取出list對象中的一個屬性並去重 List<String> stIdList2 = stuList.stream() .map(Student::getId).distinct() .collect(Collectors.toList()); stIdList2.forEach(s -> System.out.print(s+" ")); /* 結果: 123 234 345 345 ---------- 123 234 345 */ }
咱們知道,在java8出lambda表達式以前,是不支持在循環中直接對list進行刪除的。可是java8的新特性lambda表達式,幫咱們實現了這個功能:java
List<String> lists = new ArrayList<>(); lists.add("a"); lists.add("b"); lists.add("c"); //使用removeIf方法,->裏的是判斷條件,若是符合這個條件就刪除。這裏會刪除帶有c的元素 lists.removeIf(s -> s.contains("c"));
java8新特性大大的簡化了咱們的代碼,使用更加的方便。測試
Student student = studentList.stream().max(Comparator.comparing(Student::getClassCount)).get();
java8以前是這樣計算代碼運行時間的code
long startTime=System.currentTimeMillis(); //獲取開始時間 doSomeThing(); //測試的代碼段 long endTime=System.currentTimeMillis(); //獲取結束時間 System.out.println("程序運行時間: "+(end-start)+"ms");
java8以後可使用Instant獲取時間戳來計算代碼運行時間對象
public static void main(String[] args) { Instant start = Instant.now(); LongStream.rangeClosed( 0,110 ) //並行流 .parallel() .reduce( 0,Long::sum ); LongStream.rangeClosed( 0,110 ) //順序流 .sequential() .reduce( 0,Long::sum ); Instant end = Instant.now(); System.out.println("耗費時間"+ Duration.between( start,end ).toMillis()); }
我的公衆號《駭客與畫家》,歡迎關注rem