AI作成・AIで再検証済(有資格者監修なし)1Z0-826-JPN 対応
Collectors(partitioningBy)難易度 標準無料

次のコードの出力として正しいものを選べ。

1  import java.util.*;
2  import java.util.stream.*;
3  public class Q6 {
4      public static void main(String[] a) {
5          Map<Boolean, List<Integer>> m = Stream.of(1, 2, 3, 4, 5)
6              .collect(Collectors.partitioningBy(n -> n % 2 == 0));
7          System.out.println(m.get(true) + " " + m.get(false));
8      }
9  }
  1. A[2, 4] [1, 3, 5]
  2. B[1, 3, 5] [2, 4]
  3. C[2, 4] null
  4. Dコンパイルエラー(戻り型は Map<Boolean, List<Integer>> にならない)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・AIで再検証済

解説

Collectors.partitioningBy(predicate) は、要素を述語の真偽で2グループに分割し、 Map<Boolean, List<T>> を返す。

述語 n % 2 == 0(偶数か)で分けると、true→[2, 4]、false→[1, 3, 5]。 出力は [2, 4] [1, 3, 5]。

groupingBy との決定的な違いは、partitioningBy は必ず true と false の両キーを含むこと。 一方に該当要素が無くても、そのキーには空リストが入る(m.get(false) が null にならない)。

各誤答が違う理由
  • Bm.get(true) は述語が真(=偶数)のグループ。先に来るのは [2, 4] であって奇数側ではない。
  • CpartitioningBy は false キーも必ず含む。奇数は該当するので [1, 3, 5] であり null にはならない。
  • DpartitioningBy(Predicate) の戻りはまさに Map<Boolean, List<T>>。型は一致しコンパイルは通る。
ひっかけ: partitioningBy は「該当なし側」も空リスト付きで必ず存在する(groupingBy は該当が無いキー自体が生成されない)。m.get(true) が null を返すことは無い、が要点。
実機確認の答え合わせ
出力:
[2, 4] [1, 3, 5]
公式ドキュメント・関連Collectors.partitioningBy(SE17 API)↗
AIが作成し、別の手順のAIで誤りを点検した解説です(有資格者による監修は経ていません)

有資格者(著者)が監修した問題は、すべて無料サンプルとして公開しています。買う前に、その全部を実際に解いて解説まで読めます。有料で追加される問題はAIが作成したもので、有資格者の監修は入っていません。

この問題集の作り方

  1. 問題と解説はAIが作成しています。有資格者(著者)が監修した問題は、無料サンプルとして公開している分だけです。有料で追加される問題に監修は入っていません。
  2. 各問に、公式ドキュメントの出典リンクを付けています。書いてあることは、出典に当たって確かめられます。
  3. 誤答の選択肢それぞれに、なぜ誤りなのかの理由を書いています。
  4. 解説に載せているコンパイル結果は、実際に javac を走らせた出力です。想定した挙動ではありません。
  5. 誤りを見つけたら報告できます。原則として無償で訂正・削除します。
  6. 各試験の運営団体とは無関係の非公式教材です。合格を保証するものではありません。
この分野をもっと解いて、得点源に
Collectors を含む問題を分野別に演習できます。
演習する →