public class MultiMap_Test {
public static void main(String[] args) {
Multimap<String, String> myMultimap = ArrayListMultimap.create();
myMultimap.put("classlabel", "tid");
myMultimap.put("Y", "1");
myMultimap.put("Y", "2");
myMultimap.put("N", "4");
// Iterating over entire MutliMap
for(String value : myMultimap.values()) {
System.out.print(value);
}
}
}
以上代码打印1 2 tid 4
。
我不明白为什么它不打印tid 1 2 4
。
答案 0 :(得分:20)
如果您想保留广告订单,请使用LinkedListMultimap
:
Multimap<String, String> myMultimap = LinkedListMultimap.create();
答案 1 :(得分:2)
为什么在MultiMap中没有保留插入顺序?
事实上,您的问题不在MultiMap
,而在于所选的实施。 ArrayListMultimap
使用HashMap<K, Collection<V>>
作为支持Map<K, Collection<V>>
:
public static <K, V> ArrayListMultimap<K, V> create() {
return new ArrayListMultimap<K, V>();
}
//...
private ArrayListMultimap() {
super(new HashMap<K, Collection<V>>());
expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
}
并且HashMap
不保留元素插入的顺序。