久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java8的新特性怎么使用

164次閱讀
沒有評論

共計 3537 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要介紹“java8 的新特性怎么使用”,在日常操作中,相信很多人在 java8 的新特性怎么使用問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java8 的新特性怎么使用”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

1)Lambda 表達式
 概念:java8 中增加了一個新的語法 --Lambda 表達式,并且引入了一個新的操作符(Lambda 操作符): -  
 Lambda 操作符  -  : -   將 Lambda 表達式分為兩個部分:左側:指定了 Lambda 表達式需要的參數,參數的數據類型可以由編譯器的“類型推斷”機制推斷得出,故可以省略。右側:指定了 Lambda 表達式的方法體,即 Lambda 表達式要執行的功能。語法格式:格式一:無參數,無返回值
 () -  System.out.println( Hello Lambda! 
 格式二:有一個參數,并且無返回值
 (x) -  System.out.println(x)
 格式三:若只有一個參數,小括號可以省略不寫
 x -  System.out.println(x)
 格式四:有兩個以上的參數,有返回值,并且  Lambda  體中有多條語句
 (x, y) -  {
 System.out.println( 函數式接口 
 return Integer.compare(x, y);
 格式五:若  Lambda  體中只有一條語句, return  和   大括號都可以省略不寫
 (x, y) -  Integer.compare(x, y);
 格式六:Lambda  表達式的參數列表的數據類型可以省略不寫,因為 JVM 編譯器通過上下文推斷出,數據類型,即“類型推斷”(Integer x, Integer y) -  Integer.compare(x, y); 

補充:java8 中,接口里可以有 default 方法 (默認方法) 和 static 方法(靜態方法),實現類默認會繼承 defaul 方法和 static 方法。聲明一個函數式接口:@FunctionalInterface public interface FirstInterface {void run(); 1)可以通過 Lambda 表達式來創建函數式接口的對象。2)可以在函數式接口上使用 @FunctionalInterface 注解,這樣我們就可以根據該注解來判斷這個接口是否是一個函數式接口。3)Java8 內置的四個核心函數式接口 函數式接口 參數類型 返回類型 抽象方法 用途 消費型接口:Consumer T T void void accept(T t) 對類型為 T 的對象執行某一操作。供給型接口:Supplier T 無 T T get() 返回類型為 T 的對象。函數型接口:Function T, R T R R apply(T t) 對類型為 T 的對象執行某一操作,并返回 R 類型的結果。斷言型接口:Predicate T T boolean boolean test(T t) 確定類型為 T 的對象是否滿足某約束,并返回 boolean 值。//  對 String 類型的對象執行 Lambda 表達式 (x -  System.out.println(x)) 的方法體。Consumer String  strConsumer = x -  System.out.println(x); //  創建一個 Consumer(消費型接口)的對象 strConsumer.accept( Consumer 的 accept 方法!//  執行 FirstInterface firstObj = () -  System.out.println( Hello Lambda! firstObj.run();
1)若 Lambda 方法體中的功能,已經有方法提供了實現,則可以使用方法引用。2)使用操作符  ::  將方法名和對象或類的名字分隔開來。?  對象名  ::  實例方法名 ?  類名  ::  靜態方法名 ?  類名  ::  實例方法名 Comparator Integer  com1 = (x, y) -  Integer.compare(x, y); Comparator Integer  com2 = Integer::compare; 構造器引用 格式:  類名  :: new Supplier Student  sup1 = () -  new Student(); Supplier Student  sup2 = Student::new; 數組引用 格式: type[] :: new Function Integer, String[]  fun1 = (args) -  new String[args]; Function Integer, String[]  fun2 = String[]::new;
創建 Stream 的方式:1 通過 Collection 中的  stream()  或  parallelStream()  來創建一個 Stream List String  list = new ArrayList (); Stream String  stream = list.stream();  // 獲取一個順序流 Stream String  parallelStream = list.parallelStream();  // 獲取一個并行流 2 通過 Arrays 中的 stream(T[] array)創建一個 Stream 3 通過 Stream 中的 of(T... values) 創建一個 Stream generate(Supplier T  s) 創建一個無限 Stream iterate(final T seed, final UnaryOperator T  f) 創建一個無限 Stream
Stream T  filter(Predicate ? super T  predicate) 從流中排除某些元素 Stream T  limit(long n); 將流截斷,只保留流中的前 n 個元素 Stream T  skip(long n); 將流中的前 n 個元素剔除掉 Stream T  distinct(); 將流中的元素進行去重操作。根據元素的 hashCode()方法和 equals()方法來確定唯一性。Stream T  sorted(); 將流中的元素進行自然排序 Stream T  sorted(Comparator ? super T  comparator);  將流中的元素按照指定的規則排序 R  Stream R  map(Function ? super T, ? extends R  mapper); 1 說明:將流中的元素進行處理后,用新生成的元素代替原來的元素。注:新元素的類型與舊元素的類型可能不一樣。2 參數:一個函數式接口,用傳入的函數來生成新的元素。3 舉例:Stream String  stream = strList.stream().map(String::toUpperCase); R  Stream R  flatMap(Function ? super T, ? extends Stream ? extends R  mapper); 說明:將流中的每個值都換成另一個流,然后把所有流連接成一個流。
R, A  R collect(Collector ? super T, A, R  collector); 1 說明:將流轉換為其它形式,將流中的元素進行分組、拼接等。2 舉例:List String  list = strList.stream().map(String::toUpperCase).collect(Collectors.toList());
boolean allMatch(Predicate ? super T  predicate); 檢查所有的元素是否都匹配 anyMatch 檢查是否有元素匹配 noneMatch 檢查是否有元素不匹配 Optional T  findFirst(); 返回第一個元素 Optional T  findAny(); 返回流中任意一個元素 long count(); 返回流中元素的總數 Optional T  max(Comparator ? super T  comparator); 返回流中最大的元素 Optional T  min(Comparator ? super T  comparator); 返回流中最小的元素
1 只有調用終端操作后,所有的中間操作才會去執行,若沒有調用終端操作,那么所有的中間操作都將不會執行,這種模式叫做 惰性求值。2 流只能使用一次,即只能調用一次終端操作。

到此,關于“java8 的新特性怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3537字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 微博| 原平市| 安远县| 大丰市| 炉霍县| 台南县| 江城| 株洲县| 象州县| 永修县| 台中县| 富顺县| 东乌珠穆沁旗| 行唐县| 舞钢市| 宝应县| 枝江市| 满城县| 廉江市| 来安县| 清远市| 大理市| 新营市| 密山市| 桓台县| 景谷| 泸水县| 吴旗县| 元氏县| 吴忠市| 庆城县| 西城区| 宣威市| 青神县| 永善县| 莱芜市| 瑞昌市| 宝清县| 洛川县| 德江县| 齐河县|