Java 将集合转换为带计数的字符串的映射

Java 将集合转换为带计数的字符串的映射,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我的原始数据是字符串流 correctname abc,def,ghi,jol abc def,ghi zzzzzzzzzz myname pppppppppp jkl 转换it集: {correct} {abc, def,ghi,jkl} {abc} {def,ghi} {invalid} {correct} {invalid} {jkl} 我有一些Stream.map(…)返回我上面的结果 Map-answer=Stream.Map(…).collect(groupingby??) 现在

我的原始数据是字符串流

correctname
abc,def,ghi,jol
abc
def,ghi
zzzzzzzzzz
myname
pppppppppp
jkl
转换it集:

{correct}
{abc, def,ghi,jkl}
{abc}
{def,ghi}
{invalid}
{correct}
{invalid}
{jkl}
我有一些Stream.map(…)返回我上面的结果

Map-answer=Stream.Map(…).collect(groupingby??)

现在我想收集它(collect或map或groupingby),并将结果作为map返回,这样我的答案应该是

地图> {正确:2 无效:2
其他:8}

这里的技巧是将每个集合映射到其中的字符串。完成此操作后,可以使用
map
将值转换为感兴趣的值并对其进行计数。例如:

Set<String> allowed = new HashSet<>(Arrays.asList("correct", "invalid"));
Map<String, Long> result = 
    values.flatMap(Set::stream)
          .map(s -> allowed.contains(s) ? s : "other")
          .collect(Collectors.groupingBy(Function.identity(), 
                                         Collectors.counting()));
Set allowed=新的HashSet(Arrays.asList(“correct”、“invalid”);
映射结果=
values.flatMap(Set::stream)
.map->allowed.contains?s:“其他”)
.collect(收集器.groupingBy(Function.identity()),
收集器。计数();

这里的技巧是将每个集合映射到其中的字符串。完成此操作后,可以使用
map
将值转换为感兴趣的值并对其进行计数。例如:

Set<String> allowed = new HashSet<>(Arrays.asList("correct", "invalid"));
Map<String, Long> result = 
    values.flatMap(Set::stream)
          .map(s -> allowed.contains(s) ? s : "other")
          .collect(Collectors.groupingBy(Function.identity(), 
                                         Collectors.counting()));
Set allowed=新的HashSet(Arrays.asList(“correct”、“invalid”);
映射结果=
values.flatMap(Set::stream)
.map->allowed.contains?s:“其他”)
.collect(收集器.groupingBy(Function.identity()),
收集器。计数();

听起来你在找这个:

Map<String, Long> answer = sets.stream()
        .flatMap(Set::stream)
        .collect(Collectors.groupingBy(
                s -> s.matches("invalid|correct") ? s : "others",
                Collectors.counting()));
Map-answer=sets.stream()
.flatMap(集合::流)
.collect(收集器.groupingBy(
s->s.matches(“无效|正确”)?s:“其他”,
收集器。计数();

听起来你在找这个:

Map<String, Long> answer = sets.stream()
        .flatMap(Set::stream)
        .collect(Collectors.groupingBy(
                s -> s.matches("invalid|correct") ? s : "others",
                Collectors.counting()));
Map-answer=sets.stream()
.flatMap(集合::流)
.collect(收集器.groupingBy(
s->s.matches(“无效|正确”)?s:“其他”,
收集器。计数();

我很困惑。
Long
代表什么?你如何将你的集合映射到
Map
?我很困惑。
Long
代表什么?如何将集合映射到
Map