AI作成・独立検証済(有資格者監修なし)1Z0-829 対応
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作成・独立検証済

解説

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 は必ず truefalse両キーを含むこと。 一方に該当要素が無くても、そのキーには空リストが入る(m.get(false)null にならない)。

各誤答が違う理由
  • Bm.get(true) は述語が真(=偶数)のグループ。先に来るのは [2, 4] であって奇数側ではない。
  • CpartitioningByfalse キーも必ず含む。奇数は該当するので [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が作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
この分野をもっと解いて、得点源に
Collectors を含む問題を分野別に演習できます。
演習する →