CodeGym
学習
コース
課題
アンケート & クイズ
ゲーム
ヘルプ
スケジュール
コミュニティ
ユーザー
フォーラム
チャット
記事
成功事例
アクティビティ
レビュー
サブスクリプション
ライトテーマ

レッスン

  • レビュー
  • 私たちについて
開始
学習開始
今すぐ学習を始める
  • 学習の進捗
  • コース
  • クエストマップ
  • レッスン
  • groupingBy と partitioningBy のメソッド(Collectors)

    JAVA 25 SELF
    レベル 31,レッスン 2
    この講義では、コレクタ Collectors.groupingBy と Collectors.partitioningBy を使ってストリーム内のデータをグループ化する方法を学びます。単純および入れ子のグルーピング、ブール条件による二分、使い分け、結果の扱い方や小技まで。文字列・数値・オブジェクトの実例を通して、ストリーム( Stream API)から望む構造の Map を得る方法や、特徴関数( Function)・述語( Predicate)の使い方が分かります。最後に典型的なエラーも解説します。
    利用可能
  • 高度な集約: 入れ子のグルーピング

    JAVA 25 SELF
    レベル 31,レッスン 3
    Stream と Collector による入れ子のグルーピングを実践的に解説: Collectors.groupingBy を集約子( maxBy、 averagingInt、 counting)と組み合わせる方法、 mapping でデータを変換する方法、 partitioningBy で部分集合に分ける方法、そして入れ子の Map 構造の正しい読み方。豊富な例、結果構造の可視化、典型的な落とし穴の解説付き。
    利用可能
  • 高度なコレクター

    JAVA 25 SELF
    レベル 31,レッスン 4
    この講義では、Stream API のコレクターの高度な使い方を解説します。 groupingBy/ partitioningBy に対する入れ子のダウンストリーム・コレクター、 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>> ではなく Stream<String> にする方法、 Optional を stream() で扱う方法、さらに中間ストリームを作らず性能面で有利なために mapMulti を選ぶべき場面を見ていきます。
    利用可能
  • join と concat メソッド: ストリームの結合

    JAVA 25 SELF
    レベル 32,レッスン 1
    この講義では、Stream API でデータを結合する方法を解説します。2 本のストリームに対する静的メソッド Stream.concat、任意個のストリームに対する Stream.of + flatMap の組み合わせ、そして要素を 1 本の文字列に連結する収集器 Collectors.joining を取り上げます。遅延評価、ストリームの一回性、順序の保持、典型的なミス(ストリームの再利用、無限ストリーム、 joining を非文字列に使うこと)も、見やすい例で説明します。
    利用可能
  • union、intersection、difference の操作

    JAVA 25 SELF
    レベル 32,レッスン 2
    この講義では、Java における代表的な集合操作を扱います。インターフェース Set および Stream API を使った和集合( union)、積集合( intersection)、差集合( difference)です。 Stream.concat、 Stream.of + flatMap の実用例、 retainAll/ removeAll による代替、さらに equals/ hashCode、パフォーマンス、よくあるミスに関する重要な注意点も示します。
    利用可能
  • zip(ジップ)、ストリーム生成(iterate, generate)

    JAVA 25 SELF
    レベル 32,レッスン 3
    この講義では、 zip とは何か、そして標準の Stream API(Java 22 以前)に zip がなぜ存在しないのかを解説し、 IntStream.range を使ってインデックス経由でコレクションを「縫い合わせ(zip)」、さらに 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