2 回答

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
你可以使用這個:
List<String> words = Arrays.asList("a b c d e a b c".split("\\s+"));
Multimap<String, Integer> tokenMap = IntStream.range(0, words.size()).boxed()
.collect(ArrayListMultimap::create, (m, i) -> m.put(words.get(i), i), Multimap::putAll);
結(jié)果將是:
{a=[0, 5], b=[1, 6], c=[2, 7], d=[3], e=[4]}

TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊
Stream.collect()
是一個非常通用的 API,所以沒有什么特別的原因不能收集到Multimap
. 但是沒有一個變體Collectors.toMap()
可以支持這一點(diǎn),因為 acom.google.common.collect.Multimap
不是 a java.util.Map
。
我不知道現(xiàn)有的Collector
實現(xiàn)可以完成這項工作,但肯定可以通過直接實現(xiàn)Collector
.
添加回答
舉報