代码之家  ›  专栏  ›  技术社区  ›  Paul Taylor

这个定义是否有一个并发版本Java Guava collections Map

  •  -2
  • Paul Taylor  · 技术社区  · 6 年前

    ListMultimap<DuplicateKey,Integer> map =
        Multimaps.newListMultimap(
        Maps.<DuplicateKey, Collection<Integer>>newTreeMap(),
        new Supplier<List<Integer>>() {
            public List<Integer> get() {
                return Lists.newArrayList();
            }
        });
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Grzegorz Rożniecki    6 年前

    没有并发的multimap实现,但是可以用 Multimaps.synchronizedListMultimap

    返回由指定的多重映射支持的同步(线程安全)多重映射。

    就你而言:

    ListMultimap<DuplicateKey,Integer> synchronizedMultimap = 
        Multimaps.synchronizedListMultimap(map);
    

    complete javadoc 有关同步访问视图的注意事项:

    为了保证串行访问,对备份multimap的所有访问都是通过返回的multimap完成的,这一点非常关键。

    注意,根据 issue #135 on Github .