如何按长度映射字符串流

Buz*_*zet 0 java java-stream

我得到了一串字符串,并希望按长度映射它们

 Stream<String> s = Stream.of("aaaa", "a", "aaa", "a", "aaaa", "aa", "aaaaaa", "aa");
 Map<Integer, Set<String> result = null;
 int i = 0;
 result.put(i, s.filter(x -> (x.length() == i));
Run Code Online (Sandbox Code Playgroud)

显然,这不会以这种方式工作,因为我不能多次打开流,并且我无法访问longes String以获得良好的循环.但是我怎么能做到呢?

Rav*_*ala 7

这是针对您的问题的Java8解决方案,

final Map<Integer, Set<String>> strByLength = s
        .collect(Collectors.groupingBy(String::length, Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)