CodeGym
促銷
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • groupingBy 與 partitioningBy 方法(Collectors)

    JAVA 25 SELF
    等級 31,課程 2
    在本講次中,我們將學習如何在串流中使用收集器 Collectors.groupingBy 與 Collectors.partitioningBy 來分組資料:簡單與巢狀分組、依布林條件分割、兩者之間的選擇、結果處理與實用技巧。透過字串、數字與物件的實作範例,你將看到如何從串流( Stream API)取得所需結構的 Map,以及如何使用分組鍵函式( Function)與謂詞( Predicate)。最後——解析常見錯誤。
    可用
  • 進階彙總:巢狀分組

    JAVA 25 SELF
    等級 31,課程 3
    以實務角度深入巢狀分組,結合 Stream 與收集器:如何把 Collectors.groupingBy 與各式彙總器( maxBy、 averagingInt、 counting)組合使用,使用 mapping 轉換資料,透過 partitioningBy 劃分子集合,並正確讀取巢狀的 Map 結構。提供大量直觀範例、結果結構視覺化,以及常見錯誤的解析。
    可用
  • 進階收集器

    JAVA 25 SELF
    等級 31,課程 4
    在本講座中,我們會解析使用 Stream API 收集器的進階技巧:用於 groupingBy/ partitioningBy 的巢狀 downstream 收集器,透過 mapping 進行轉換,透過 filtering 進行過濾,透過 flatMapping 進行「展開」,使用 teeing(Java 12+)進行同時彙總,以及透過 toUnmodifiableList/Set/Map 和 collectingAndThen 來「凍結」集合。並展示實作管線與常見錯誤。
    可用
  • flatMap 與 mapMulti 方法

    JAVA 25 SELF
    等級 32,課程 0
    在本講次我們會說明,使用 map 的一般轉換、使用 flatMap 的「扁平化」轉換,以及自 Java 16+ 引入、效率更高的替代方案 — mapMulti 之間有何差異。透過實作範例,你將清楚看到如何把巢狀集合解包為 Stream<String>(而非 Stream<Stream<String>>)、如何透過 Optional 的 stream() 來處理值,以及在不建立中介串流的前提下,何時該選擇 mapMulti 以獲得較佳效能。
    可用
  • join、concat 方法:合併串流

    JAVA 25 SELF
    等級 32,課程 1
    在本講次中,我們討論在 Stream API 中合併資料的方式:針對兩個串流使用靜態方法 Stream.concat,針對任意數量的串流使用 Stream.of + flatMap 的組合,另外還有用於把元素黏成一條字串的收集器 Collectors.joining。我們會談到延遲性(lazy)、串流一次性(只能用一次)、順序保留,以及常見錯誤(重複使用同一串流、無限串流、對非字串使用 joining)——並附上直觀的範例。
    可用
  • Union、Intersection、Difference 集合運算

    JAVA 25 SELF
    等級 32,課程 2
    在本講座中,我們講解 Java 中集合的常見運算:聯集( union)、交集( intersection)與差集( difference),基於介面 Set 與 Stream API。展示了搭配 Stream.concat、 Stream.of + flatMap 的實用範例,以及透過 retainAll/ removeAll 的替代方式,並說明 equals/ hashCode、效能與常見錯誤等重要細節。
    可用
  • Zip 合併(zip)、串流生成(iterate、generate)

    JAVA 25 SELF
    等級 32,課程 3
    在本講座我們將說明什麼是 zip,以及為什麼在標準的 Stream API(到 Java 22 為止)裡沒有它;學會透過 IntStream.range 以索引「縫合」集合,還有如何用 Stream.iterate 與 Stream.generate 即時建立串流。範例、視覺化與常見錯誤將幫助你在實務中穩健地運用生成與 zip。
    可用
  • 處理串流時的常見錯誤解析

    JAVA 25 SELF
    等級 32,課程 4
    詳細指南:使用 Java 的 Stream API 時的常見錯誤——串流的一次性本質與重複終端操作( collect()、 forEach()、 count())、在遍歷期間修改集合、對無限串流( iterate、 generate)忘了加上 limit()、如何處理 null 與透過 flatMap(Optional::stream) 使用 Optional、使用 forEachOrdered() 保持順序、用 Set 進行高效集合運算、正確關閉資源( Files.lines + try-with-resources)、小心使用 parallelStream(),以及「在沒有終端運算子之前—不會執行任何東西」的原則。所有問題皆附有清楚的範例與修正方式。
    可用
  • 原始型別串流與裝箱(boxing)的成本

    JAVA 25 SELF
    等級 33,課程 0
    本講座將說明為什麼在處理數值集合時使用一般的串流( Stream<Integer>、 Stream<Double>)可能因為裝箱/拆箱(boxing/unboxing)而效率不佳,以及原始型別串流 — IntStream、 LongStream、 DoubleStream — 如何避免這個問題。會介紹 mapToInt/ boxed() 等轉換、彙總操作( sum()、 average()、 summaryStatistics())、以 OptionalInt/ OptionalDouble 安全取得結果,以及哪些情境的最佳化真的有效,並如何用 JMH 量測效益。
    可用
  • Stream API 中的惰性處理(lazy evaluation)

    JAVA 25 SELF
    等級 33,課程 1
    在本講座中,我們將說明 Stream API 中的惰性處理如何運作:中間操作與終端操作有何差異、為什麼計算只會在呼叫終端操作後才啟動、逐元素處理與「短路運算」能帶來哪些優勢。我們會示範包含 filter、 map、 peek、 findFirst、 forEach 的鏈式操作,視覺化元素的通過流程,並解析常見錯誤與關於有效操作順序的建議。
    可用
  • 不可變集合:Collections.unmodifiable

    JAVA 25 SELF
    等級 33,課程 2
    在本講座中,我們將講解如何使用不可變包裝 Collections.unmodifiableList、 unmodifiableSet、 unmodifiableMap 來保護資料,說明「淺層」不可變與「深層」不可變的差異、何時以及為何要從方法返回包裝,還有現代的替代方案 List.of/ Set.of/ Map.of。我們也會談到常見錯誤(例如,期待深層不可變或在程式中處理 null)以及為什麼嘗試修改會拋出 UnsupportedOperationException。
    可用
  • Spliterator 與平行串流

    JAVA 25 SELF
    等級 33,課程 3
    在本講座中,我們說明什麼是 Spliterator,它不僅能遍歷元素,還能透過 trySplit() 將資料來源切分為多部分;並介紹基於此機制的平行串流如何透過 parallelStream() 與共用的 ForkJoinPool 運作。內容包含關鍵方法( tryAdvance、 estimateSize、 characteristics)、典型特性( ORDERED、 SIZED、 CONCURRENT 等)、實用範例、Mermaid 圖示,以及使用平行串流時的常見錯誤。
    可用
  • 1
  • ...
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...
  • 30
學習
  • 註冊
  • Java 課程
  • 題目協助
  • 價格
  • 遊戲專案
  • Java 語法
社群
  • 用戶
  • 文章
  • 論壇
  • 聊天
  • 成功故事
  • 動態
  • 聯盟計畫
公司
  • 關於我們
  • 聯絡方式
  • 評價
  • 新聞中心
  • CodeGym for EDU
  • 常見問題
  • 支援
CodeGymCodeGym 是一門從零開始學習 Java 程式設計的線上課程。這門課程是初學者精通 Java 的完美方式。它包含超過 1200 題、具即時檢驗功能,以及涵蓋 Java 基礎理論的必要範圍。為了幫助你在學習上成功,我們實作了一系列激勵功能:測驗、程式專案、關於有效學習的內容,以及 Java 開發者職涯相關內容。
追蹤我們
介面語言
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia
繁體中文
Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"程式設計師是培養出來的,不是天生的" © 2026 CodeGym
MastercardVisa
"程式設計師是培養出來的,不是天生的" © 2026 CodeGym