我正在阅读一个巨大的csv文件,其中包含重复的条目。我能够将整个csv文件读取到Multimap
中。我还能够获得具有重复值的键集并将它们写入文件。我想获得与每个键相关联的值并将其写入文件,但无法这样做。我似乎找不到任何可能对我有帮助的选择。我尝试使用entries()
方法,根据文档
返回包含在multimap中的所有键值对的视图集合,如
Map.Entry
实例
但我不能从中得到任何东西。
我使用ArrayListMultiMap
实现MultiMap
。使用ArrayList
的原因是,后来我需要在ArrayList
中执行更快的搜索操作。
我已经将密钥集存储为MultiSet
,这就是为什么我能够获得所有重复密钥的原因。
每个键的值都是一个对象,我希望将其写入与所读键对应的文件
如果您希望每个键和每个值与该键相关联,而不是每个键-值对,那么您可以使用
for (Map.Entry<String, Collection<SomeClassObject>> entry : multimap.asMap().entrySet()) {
String key = entry.getKey();
Collection<SomeClassObject> valuesForKey = entry.getValue();
// do whatever
}
正如您所发现的,有两种方法来考虑Multimaps。一个是作为Map<K, Collection<V>>
,另一个是作为Map<K, V>
,其中的键不必是唯一的。在文档中,Google强调首选后一种方法,尽管如果按照Louis的建议执行multimap.asMap().entries()
(注意,不仅仅是multimap.entries()
),您将获得与前一版本类似的条目。
对于你的特殊问题,我不知道你为什么不能这样做:
for (String key : multimap.keySet()) {
Collection<SomeClassObject> values = multimap.get(key);
//Do whatever with all the values for Key key...
}