java8 常用代碼

1. 使用java8 提取出 list 中 bean 的某一屬性

    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+" "));
        /*  結(jié)果:
            123 234 345 345  
            ----------
            123 234 345 
        */
    }

2. java8 中根據(jù)判斷刪除列表list中的元素

我們知道,在java8出lambda表達式之前,是不支持在循環(huán)中直接對list進行刪除的。但是java8的新特性lambda表達式,幫我們實現(xiàn)了這個功能:

List<String> lists = new ArrayList<>();
lists.add("a");
lists.add("b");
lists.add("c");

//使用removeIf方法,->里的是判斷條件,如果符合這個條件就刪除。這里會刪除帶有c的元素
lists.removeIf(s -> s.contains("c"));

java8新特性大大的簡化了我們的代碼,使用更加的方便。

3. java8 獲取 lsit 中bean 的某一屬性最大的對象

Student student = studentList.stream().max(Comparator.comparing(Student::getClassCount)).get();

4. java8 計算代碼運行時間

java8之前是這樣計算代碼運行時間的

long startTime=System.currentTimeMillis();   //獲取開始時間  
doSomeThing();  //測試的代碼段  
long endTime=System.currentTimeMillis(); //獲取結(jié)束時間  
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());
}

個人公眾號《駭客與畫家》,歡迎關注

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 注:之前關于Java8的認知一直停留在知道有哪些修改和新的API上,對Lambda的認識也是僅僅限于對匿名內(nèi)部類的...
    mualex閱讀 2,930評論 1 4
  • 本文是對Benjamin的JAVA8 教程的翻譯,原文地址如下: 原文地址 本文會逐步介紹JAVA8的新特性,通過...
    浮梁翁閱讀 3,088評論 0 29
  • Java8 in action 沒有共享的可變數(shù)據(jù),將方法和函數(shù)即代碼傳遞給其他方法的能力就是我們平常所說的函數(shù)式...
    鐵牛很鐵閱讀 1,357評論 1 2
  • 原鏈接:http://www.cnblogs.com/langtianya/p/3757993.html JDK各...
    把愛放下會走更遠閱讀 1,212評論 0 10
  • Streams 原文鏈接: Streams 原文作者: shekhargulati 譯者: leege100 狀態(tài)...
    忽來閱讀 5,607評論 3 32

友情鏈接更多精彩內(nèi)容