我想按插入顺序遍历LinkedHashMultiMap<String,String>
(番石榴)的特定键的值。
这可能吗?如果是这样,怎么样?
为何选择LinkedHashMultiMap
?好吧,我现有的数据结构是HashMultiMap
,我想我是否将其更改为LinkedHashMultiMap
,这将与我现有的代码兼容,我可以以某种方式迭代这些值。
但是看一下这些文档,我无法弄清楚 - 那就是说,我是LinkedHashMultiMap
类的新手。
答案 0 :(得分:3)
按LinkedHashMultimap
is a documented behavior
Multimap
的实现,它不允许重复的键值条目,并返回其迭代器遵循将数据添加到多图的顺序的集合。
并且开箱即用,请参阅wiki page on Multimap
implementations:
| Implementation | Keys behave like... | Values behave like.. |
|:---------------------|:--------------------|:---------------------|
| LinkedHashMultimap** | LinkedHashMap | LinkedHashSet |
`**` `LinkedHashMultimap` preserves insertion order of entries,
as well as the insertion order of keys, and the set of values associated with any one key.
代码示例:
LinkedHashMultimap<String, String> m = LinkedHashMultimap.create();
m.put("a", "foo");
m.put("b", "bar");
m.put("a", "baz");
m.get("a").forEach(System.out::println); // outputs "foo" and "baz"
答案 1 :(得分:2)
只需使用get
,然后在for-each循环中迭代生成的Set
。
for (String value : multimap.get(key)) {
}
集合的迭代器将按Multimap
指定的get
的顺序迭代。
同样,
removeAll
,replaceValues
和Array(100)
会返回按照添加顺序迭代值的集合。