gpt4 book ai didi

java - 如何在没有强制转换的情况下迭代 SetMultimap 中的集合?

转载 作者:行者123 更新时间:2023-11-29 06:15:55 27 4
gpt4 key购买 nike

我有一个 SetMultimap<X> x我需要对每个 Set<X> 做点什么这张 map 包含(此时我不需要 key )。我可以打电话x.asMap().values() , 但不幸的是,此方法返回 Collection<Collection<X>> .所以当遍历这个时我需要转换每个 Collection<X>进入 Set<X> :

SetMultimap<X> x;
for (Collection<X> y : x.asMap().values()) {
foo((Set<X>)y); // foo only takes a Set<X>
}

还有没有这个类型转换吗?当然 SetMultimap 的文档声明此类型转换是安全的,但如果根本不需要类型转换会更好。 SortedSetMultimap 也会出现同样的问题.

最佳答案

a) 您没有理由需要SetSet 没有超出 Collection 指定的方法。你得到的集合是集合,但变量类型不是。使用 Collections,无需强制转换。

b) 如果您确实需要 Set,或者在 SortedSetMultimap 的情况下需要 SortedSet,则必须遍历键:

SetMultimap<String,Integer> mmap = Multimaps.newSetMultimap(map, supplier);
for(String key : mmap.keySet()){
Set<Integer> set = mmap.get(key);
}

SortedSetMultimap<String,Integer> mmap = 
Multimaps.newSortedSetMultimap(map, supplier);
for(String key : mmap.keySet()){
SortedSet<Integer> sortedSet = mmap.get(key);
}

关于java - 如何在没有强制转换的情况下迭代 SetMultimap 中的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5089573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com