如何使用番石榴将MultiMap <Integer,Foo>转换为Map <Integer,Set <Foo >>?

脑力激荡者:

我正在使用来自Google Guava 12的MultiMap,如下所示:

Multimap<Integer, OccupancyType> pkgPOP = HashMultimap.create();

将值插入此多图后,我需要返回:

Map<Integer, Set<OccupancyType>>

但是,当我这样做时:

return pkgPOP.asMap();

它返回我

Map<Integer, Collection<OccupancyType>>

我该如何返回Map<Integer, Set<OccupancyType>>

Xaerxess:

查看此问题,并评论番石榴开发负责人Kevin Bourrillion的第二条评论

您可以Map<K, Collection<V>>先将其双播到原始Map,然后再双播到所需的Map Map<K, Set<V>>您必须禁止显示未经检查的警告,并在此时注释“安全,因为SetMultimap可以保证这一点。” 我什至可以更新SetMultimap javadoc来提及此技巧。

因此,未经检查的类型转换也是如此:

@SuppressWarnings("unchecked") // Safe because SetMultimap guarantees this.
final Map<Integer, Set<OccupancyType>> mapOfSets = 
    (Map<Integer, Set<OccupancyType>>) (Map<?, ?>) pkgPOP.asMap();

编辑:

从Guava 15.0开始,您可以使用辅助方法以更优雅的方式执行此操作:

Map<Integer, Set<OccupancyType>> mapOfSets = Multimaps.asMap(pkgPOP);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Map <Long,List <Foo >>转换为List <Foo>

如何合并Foo <A> | Foo <B>转换为Foo <A | B>

使用番石榴函数将List <List <String >>转换为List <Integer>

如何正确地将 _foo 转换为 `Foo` 类型?

Swift:将Foo <String>转换为Foo <Any>

打字稿将类型`typeof Foo`转换为`Foo`

java中foo(int)和foo(Integer)的区别

将* [] foo类型的变量转换为* [] bar

如何在Java 8中将Map <Shape,int []>转换为Map <Shape,Set <Integer >>?

使用纯 SQL 从 foo.year、foo.month、foo.day 转换为日期?

将Map <Integer,Long>转换为Integer数组

将Map中的List <integer>转换为Range <integer>

如何转换List <?将Foo>扩展到List <Foo>

Swift Combine:如何将`AnyPublisher <[Foo],*>`转换为`AnyPublisher <Foo,*>`?

使用GSON将Map <Integer,Object>转换为JSON?

使用XStream将XML转换为Java Map <String,Integer>

使用XStream将XML转换为Java Map <String,Integer>

使用Java流API将Map <Integer,List <Object >>转换为Map <Integer,Map <String,Map <LocalDate,Integer >>>

使用Java 8流,如何将Map <String,Map <String,List <Person >>>转换为Map <Integer,Map <String,Integer >>?

使用map <int,Foo>代替vector <Foo>避免指针失效

有什么办法可以将Box <Box <Foo + Send >>转换为Box <Box <Foo >>?

如何使用Java 8流将Course类型的对象转换为Map <Integer,Integer>?

将List <Employee>转换为Map <Integer,List <Employee >>的方法

将List <String>转换为Map <String,Integer>

如何使用lambdas /流将对象的嵌套列表转换为地图(Map <Integer,Map <Integer,Object >>)

将IEnumerable <foo>的列表转换为List <string>

使用哪个:foo和foo:

使用Java 8流如何将Map <String,List <Something >>转换为Map <String,Integer>?

在类型类的方法foo(T [])是不适用的参数(向量<Integer>的)