groupingBy 使用布尔值,但添加自定义字符串作为键

Rem*_*emo 3 java collections java-8 java-stream collectors

我有下面的代码并基于布尔值进行 groupingBy

Map<Boolean, List<Test>> products = testList
        .stream()
        .collect(Collectors.groupingBy(Test::isValidUser));
        
Run Code Online (Sandbox Code Playgroud)

我想把它收集起来Map<String, List<Test>

基于布尔值,想要将自定义键添加为“有效”和“无效”。

如果为isValidUsertrue,则要将密钥添加为“有效”,否则密钥应为“无效”

在 Java 11 中是否有可能做到这一点?

注意:没有在Test类中添加String变量

Rav*_*ala 7

您可以使用收集器中键分类器函数中的三元运算符来完成此操作groupingBy。它看起来是这样的。

Map<String, List<Test>> products = testList.stream()
        .collect(Collectors.groupingBy(t -> t.isValidUser() ? "Valid" : "Invalid"));
Run Code Online (Sandbox Code Playgroud)

  • 或者 `.collect(Collectors.collectingAndThen(Collectors.partitioningBy( Test::isValidUser), m -&gt; Map.of("Valid", m.get(true), "Invalid", m.get(false)))) ` (5认同)