final int[] index = {0};
Stream<ComplexObject> t = someListOfComplexObject.stream();
ConcurrentMap<String, List<Integer>> m =
t.collect(Collectors.groupingBy(
e -> e.getComplexStringElem(),
Collectors.mapping(
e -> index[0]++,
Collectors.toList()
),
ConcurrentSkipListMap::new));
2条答案
按热度按时间niknxzdl1#
正如@reto h所提醒的öhener在我的问题ref中说过,为了保持原始的插入顺序索引位置,可以在类似arraylist的东西中镜像键集中的键,使其与hashmap的更新保持同步,并使用它来查找位置
对于列表:用位置列表作为值填充有序的concurrentmap(如concurrentskiplistmap)应该可以做到这一点。卡菲也可以做这项工作,但我还需要看看。
jqjz2hbq2#
自定义实现可以并行地保持列表和Map。包含字符串作为键及其列表索引作为值的Map。假设每个字符串只出现一次。