中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

課程設(shè)計(jì)代做網(wǎng)站推薦優(yōu)化疫情二十條措施

課程設(shè)計(jì)代做網(wǎng)站推薦,優(yōu)化疫情二十條措施,和狗做的網(wǎng)站好,深圳家裝設(shè)計(jì)公司排名榜1. 簡(jiǎn)介 目前響應(yīng)式編程的學(xué)習(xí)中很多時(shí)候都用到了Lambda表達(dá)式和StreamAPI,那么今天就在這里記錄一下一些最基本的使用方法。 StreamAPI中引入了流的概念,其將集合看作一種流,流在管道中傳輸(動(dòng)態(tài)的),可以…

1. 簡(jiǎn)介

目前響應(yīng)式編程的學(xué)習(xí)中很多時(shí)候都用到了Lambda表達(dá)式和StreamAPI,那么今天就在這里記錄一下一些最基本的使用方法。
StreamAPI中引入了流的概念,其將集合看作一種流,流在管道中傳輸(動(dòng)態(tài)的),可以在管道的不同節(jié)點(diǎn)上進(jìn)行處理,如篩選、排序、聚合等。

  1. 流的三部分 數(shù)據(jù)流、N個(gè)中間操作、一個(gè)終止操作
  2. 流需寫成一個(gè)整體,因?yàn)?strong>流的所有操作是無狀態(tài)的,數(shù)據(jù)狀態(tài)僅在當(dāng)前流內(nèi)有效,外部不要對(duì)流中的操作產(chǎn)生影響比如增刪改啥的
  3. 流一些操作默認(rèn)跟for循環(huán)差不多(單線程,流中的每個(gè)元素要完整經(jīng)過一邊流操作才能到下一個(gè)元素),要想多線程要調(diào)用 parallel() 操作,使得其變成一個(gè)并發(fā)流,但與此同時(shí)也需要取解決線程安全問題(加鎖)
  4. 流在大數(shù)據(jù)量的時(shí)候比for循環(huán)效率高(stream作為一個(gè)管道,其中定義了一系列回調(diào)函數(shù),可以理解為沒有事就不做事,有事的時(shí)候jvm底層自動(dòng)幫我們調(diào)用)

2. 數(shù)據(jù)流的創(chuàng)建

Stream<Integer> stream1 = Stream.of(1,2,3);Stream<Integer> stream2 = Stream.concat(Stream.of(2,3,4), stream1);
// 調(diào)用構(gòu)造器方法,記得最后要調(diào)用build()方法
Stream<Object> stream3 = Stream.builder().add("11").add("12").build();//常用: 調(diào)用集合容器本身的stream()方法
//list
List<Integer> list = List.of(1,2);
Stream<Integer> stream4 = list.stream();//set
Set<Integer> set = Set.of(1,2);
Stream<Integer> stream5 = set.stream();//map 分別獲取key和value的集合后再stream
Map<Object,Integer> map;
Stream<Object> stream6 = map.keySet().stream();
Stream<Integer> stream7 = map.values().stream();

3. 中間操作

  • filter: 過濾,選出需要的元素
  • map: 映射,而且事一一映射
    • mapToInt、mapToLong、mapToDouble
  • flatMap:一對(duì)多映射
// 自己定義一個(gè)Person類
List<Person> list = List.of(new Person("charles bibi",11),new Person("katie pesto",12),new Person("paul garba",13),new Person("peter park",14),new Person("rachel chen",15),);list.stream().skip(1) // 跳過前面i個(gè)元素.filter(person -> person.getAge() > 13) // 過濾獲取年齡大于13的人.map(person -> person.getName) // 獲取年齡大于13的人的名字,這時(shí)候就是Stream<String>了.peek(System.out::println) // peek方法對(duì)每個(gè)元素執(zhí)行操作,但不改變?cè)乇旧怼?/span>.flatMap(name -> {String[] temp = name.split(" "); // 根據(jù)空格切分,獲得姓和名return Arrays.stream(temp);}).distinct() // 去重.foreach(System.out::println); // 輸出來看一看

3.1 takeWhile()

takewhile()方法當(dāng)不滿足操作時(shí)直接結(jié)束流操作,而filter()方法無條件執(zhí)行每一個(gè)元素

List<Integer> collect = List.of(1,2,3,4,5,6).stream().sorted() // 進(jìn)行排序(默認(rèn)降序).takewhile(i -> i>2).collect(Collectors.toList()); 

4. 終止操作(一些簡(jiǎn)單的就不實(shí)現(xiàn)啦,基本沒有參數(shù)直接調(diào)用)

  1. forEach: 對(duì)每個(gè)元素執(zhí)行操作。
  2. toArray: 將流元素轉(zhuǎn)化為數(shù)組。
// 創(chuàng)建一個(gè)整數(shù)流
Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5);// 使用toArray方法將流轉(zhuǎn)換為數(shù)組
Integer[] array = numberStream.toArray(Integer[]::new);
  1. reduce: 使用BinaryOperator組合流元素。
// 創(chuàng)建一個(gè)整數(shù)流
Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5);// 使用reduce方法將流中的元素組合起來生成一個(gè)值
// 第一個(gè)參數(shù)為累積操作的初始值0, 第二個(gè)為改變初始值的方法
int sum = numberStream.reduce(0, (a, b) -> a + b);
  1. collect: 將流元素收集到某些數(shù)據(jù)結(jié)構(gòu)中,如List、Set或自定義數(shù)據(jù)結(jié)構(gòu)。
  2. min/max: 查找流中的最小或最大元素。
// 創(chuàng)建一個(gè)整數(shù)流
Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5);// 使用max方法獲取流中的最大值
// Integer::compareTo方法引用作為比較器。并通過orElse方法處理可能的空值情況
int maxValue = numberStream.max(Integer::compareTo).orElse(0);
  1. count: 計(jì)算流中的元素?cái)?shù)量。
  2. anyMatch/allMatch/noneMatch: 檢查流中是否至少有一個(gè)元素滿足條件,所有元素都滿足條件,或者沒有元素滿足條件。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 是否有大于3的元素, 返回boolean值
boolean anyMatch = numbers.stream().anyMatch(number -> number > 3);
  1. findFirst/findAny: 查找流中的第一個(gè)元素或者任意一個(gè)元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);Optional<Integer> anyNumber = numbers.stream().filter(number -> number % 2 == 0).findAny();if (anyNumber.isPresent()) {System.out.println("找到的任意一個(gè)偶數(shù):" + anyNumber.get());
} else {System.out.println("沒有找到偶數(shù)");
}
  1. forEachOrdered: 以遇到的順序?qū)α髦械拿總€(gè)元素執(zhí)行操作,與forEach類似但有順序保證。
http://www.risenshineclean.com/news/8828.html

相關(guān)文章:

  • 寶雞做網(wǎng)站公司谷歌瀏覽器下載官網(wǎng)
  • 公司網(wǎng)站建設(shè)怎么選擇主機(jī)大小百度推廣個(gè)人怎么開戶
  • 太原網(wǎng)站建設(shè)制作報(bào)價(jià)南寧seo營(yíng)銷推廣
  • 網(wǎng)站建設(shè)維護(hù)及使用管理辦法自動(dòng)友鏈網(wǎng)
  • 企業(yè)網(wǎng)站運(yùn)營(yíng)推廣難做嗎天津seo數(shù)據(jù)監(jiān)控
  • erp系統(tǒng)哪家做得好武漢整站seo數(shù)據(jù)上云
  • 如何做網(wǎng)站呢上海網(wǎng)絡(luò)推廣平臺(tái)
  • 蘇州專業(yè)網(wǎng)站建設(shè)定制正規(guī)考證培訓(xùn)機(jī)構(gòu)
  • 在哪里學(xué)做網(wǎng)站網(wǎng)絡(luò)seo優(yōu)化公司
  • 自己可以做開獎(jiǎng)網(wǎng)站嗎方象科技服務(wù)案例
  • 重慶做網(wǎng)站微信的公司百度灰色詞排名代發(fā)
  • 做海報(bào)的參考網(wǎng)站怎么做線上銷售
  • 用群暉nas做網(wǎng)站營(yíng)銷策劃經(jīng)典案例
  • 做網(wǎng)站收會(huì)員費(fèi)徐州seo
  • 網(wǎng)站注冊(cè)協(xié)議怎樣自己做網(wǎng)站
  • 怎樣自建網(wǎng)站網(wǎng)頁優(yōu)化建議
  • 平面設(shè)計(jì)海報(bào)圖片seo按天計(jì)費(fèi)系統(tǒng)
  • 巨鹿網(wǎng)站建設(shè)網(wǎng)絡(luò)公司關(guān)鍵詞查詢工具
  • 安陽做網(wǎng)站的公司流量寶
  • 網(wǎng)站類型分類有哪些電商網(wǎng)站建設(shè) 網(wǎng)站定制開發(fā)
  • 長(zhǎng)春網(wǎng)絡(luò)營(yíng)銷外包泰州seo推廣
  • 網(wǎng)站節(jié)日制作快速網(wǎng)站輕松排名
  • 社交網(wǎng)站開發(fā)語言俄羅斯引擎搜索
  • 網(wǎng)站交換鏈接怎么做百度競(jìng)價(jià)個(gè)人開戶
  • 網(wǎng)站代理什么意思百度seo排名優(yōu)化助手
  • 在合肥做網(wǎng)站多少錢千川推廣官網(wǎng)
  • 做網(wǎng)站需要云數(shù)據(jù)庫嗎2345網(wǎng)址導(dǎo)航手機(jī)版
  • 上海網(wǎng)站建設(shè)與設(shè)計(jì)公司好百度手機(jī)網(wǎng)頁版入口
  • 小說網(wǎng)站架構(gòu)win10優(yōu)化工具下載
  • 深圳福田做網(wǎng)站百度推廣開戶需要多少錢