Zof*_*off 2 java java-8 java-stream
我有一个Map对象Map<t1, Set<t2>>,我想进入集合并将t2集合转换为新地图的键.原始键t1将是地图的新值.
例如,给定一个包含两个条目的地图
{key1: [a, b, c], key2: [c, d]}
Run Code Online (Sandbox Code Playgroud)
得到的地图将是
{a: [key1], b: [key1], c: [key1, key2], d: [key2]}
Run Code Online (Sandbox Code Playgroud)
[]表示在上面的例子中设置.
Java 8:
map.entrySet()
.stream()
.flatMap(e -> e.getValue()
.stream()
.map(v -> new SimpleEntry<>(v, e.getKey())))
.collect(Collectors.groupingBy(Entry::getKey,
Collectors.mapping(Entry::getValue, Collectors.toSet())))
Run Code Online (Sandbox Code Playgroud)
番石榴:
Multimaps.asMap(map.entrySet()
.stream()
.collect(ImmutableSetMultimap.flatteningToImmutableSetMultimap(
Entry::getKey, e -> e.getValue().stream()))
.inverse())
Run Code Online (Sandbox Code Playgroud)
EntryStream.of(map)
.flatMapValues(Set::stream)
.invert()
.grouping(Collectors.toSet())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |