AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

我們一起聊聊 Java Steam 常用 API

來源: 責編: 時間:2023-11-10 09:15:19 335觀看
導讀現在 Java 17 和 Java 11 基本上可以和 Java8 平分 JDK 裝機比例。下面是我常用的一些 Strem API 操作。除了分組、轉換、排序,如果大家還有更多常用的 API 可以一起留言交流。分組List 默認分組過后是 Map<Key, List>

現在 Java 17 和 Java 11 基本上可以和 Java8 平分 JDK 裝機比例。下面是我常用的一些 Strem API 操作。除了分組、轉換、排序,如果大家還有更多常用的 API 可以一起留言交流。XPh28資訊網——每日最新資訊28at.com

分組

List 默認分組過后是 Map<Key, List>XPh28資訊網——每日最新資訊28at.com

List<StreamItem> streamList = Stream.of(        new StreamItem(1, "k1"),        new StreamItem(2, "k1"),        new StreamItem(3, "k2"),        new StreamItem(4, "k2")).collect(Collectors.toList());System.out.println(streamList);//1.1分組Map<String, List<StreamItem>> streamMap1 = streamList.stream().collect(Collectors.groupingBy(StreamItem::getKey));System.out.println(streamMap1);//輸出:{k1=[StreamItem{id=1, key='k1', name='i_1|k_k1'}, StreamItem{id=2, key='k1', name='i_2|k_k1'}], k2=[StreamItem{id=3, key='k2', name='i_3|k_k2'}, StreamItem{id=4, key='k2', name='i_4|k_k2'}]}

List 默認分組過后是 Map<Key, Object>XPh28資訊網——每日最新資訊28at.com

//1.2分組只拿第一個Map<String, StreamItem> streamMap2 = Stream.of(        new StreamItem(1, "k1"),        new StreamItem(2, "k2")).collect(Collectors.toMap(StreamItem::getKey, Function.identity()));//如果 key 重復報: java.lang.IllegalStateException: Duplicate keySystem.out.println(streamMap2);//輸出:{k1=StreamItem{id=1, key='k1', name='i_1|k_k1'}, k2=StreamItem{id=2, key='k2', name='i_2|k_k2'}}

分組,在組內排序然后獲取最大值,或者最小值XPh28資訊網——每日最新資訊28at.com

Comparator<StreamItem> idComparator =Comparator.comparing(StreamItem::getId);Map<String, Optional<StreamItem>> streamMap3 = streamList.stream().collect(Collectors.groupingBy(StreamItem::getKey,                                                                Collectors.reducing(BinaryOperator.maxBy(idComparator))));System.out.println(streamMap3);//輸出{k1=Optional[StreamItem{id=2, key='k1', name='i_2|k_k1'}], k2=Optional[StreamItem{id=4, key='k2', name='i_4|k_k2'}]}

List 轉換為 List

這個也是超級實用的 apiXPh28資訊網——每日最新資訊28at.com

List<List<StreamItem>> partitionList = Lists.partition(streamList, 2);List<StreamItem> streamList1 = partitionList.stream().flatMap(Collection::stream).collect(Collectors.toList());System.out.println(streamList1);//輸出[StreamItem{id=1, key='k1', name='i_1|k_k1'}, StreamItem{id=2, key='k1', name='i_2|k_k1'}, StreamItem{id=3, key='k2', name='i_3|k_k2'}, StreamItem{id=4, key='k2', name='i_4|k_k2'}]

排序

排序,默認正序,如果是需要倒序,可以在comparing 方法后面再調用 reversed 方法XPh28資訊網——每日最新資訊28at.com

//3.1 正序List<StreamItem> streamList2 = Stream.of(    new StreamItem(3, "k1"),    new StreamItem(1, "k1"),    new StreamItem(2, "k2"))//倒序:Comparator.comparing(StreamItem::getId).reversed().sorted(Comparator.comparing(StreamItem::getId)).collect(Collectors.toList());System.out.println(streamList2);

去重

去重復后,保留最后寫入的值XPh28資訊網——每日最新資訊28at.com

//4.1 去重復List<StreamItem> streamList3 = Stream.of(    new StreamItem(3, "k1"),    new StreamItem(1, "k1"),    new StreamItem(2, "k2"))//如果只需要保留最大的 id 的值,就可以先排序, 時間復雜度考了個人覺得實用 group 更優.sorted(Comparator.comparing(StreamItem::getId).reversed()).collect(Collectors.collectingAndThen(Collectors.toCollection(() ->                                                              //利用 set 特征去重                                                              new TreeSet<>(Comparator.comparing(StreamItem::getKey))), ArrayList::new));System.out.println(streamList3);//輸出:[StreamItem{id=3, key='k1', name='i_3|k_k1'}, StreamItem{id=2, key='k2', name='i_2|k_k2'}]

其他常用 API

  • filter(按照條件過濾需要數據)
  • max(取出流中的最大值)
  • min(取出流中的最小值)
  • count(取出流中的數量)
  • sum(取出流中數據的和)
  • average(取出流中數據的平均值)
  • distinct(將流中的數據去重)
  • sorted(自然排序,默認為升序,可以設置為升序排序或者降序排序)
  • limit,skip (限制和跳過:可以將流數據的部分截取,可用于后臺的分頁場景)
  • map(映射轉換)
  • collect,toList(不可以對集合去重)
  • collect, toSet(可以集合去重)
  • toArray(將流數據轉為數組)
  • mapToInt,distinct(將流數據轉成IntStream,并去重)
  • reduce 求和
  • reduce 求最大值
  • reduce 求最小值
  • reduce 求乘積
  • findFirst(查找第一個元素)
  • findAny(任意查找一個元素)
  • allMatch(判斷是否全部滿足條件,全部滿足返回 true,否則返回false)
  • anyMatch(判斷是否有一個滿足條件,只要有一個滿足就返回 true,否則都不滿足返回false)
  • noneMatch(判斷是否都不滿足條件,都不滿足返回true,否則返回false)
  • flatmap(扁平化流處理)

本文鏈接:http://www.tebozhan.com/showinfo-26-19904-0.html我們一起聊聊 Java Steam 常用 API

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 信貸系統中是如何使用征信數據?

下一篇: 使用LLama和ChatGPT為多聊天后端構建微服務

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網課,網課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業又有了新的發展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 小紅書1周漲粉49W+,我總結了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人&ldquo;珍藏&rdquo;是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、&ldquo;Ringdoll戒之人形&rdquo;淘寶店鋪有關外貌的評價,黃山已經聽累了。生于1985年的他,哪
  • 華為Mate 60保護殼曝光:碩大后置相機模組 凸起程度有驚喜

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 微軟發布Windows 11新版 引入全新任務欄狀態

    近日,微軟發布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優化的任務欄
Top