您想要按自然顺序排列键 - 只需使用自定义Multimap
using newListMultimap from Multimaps class http://docs.guava-libraries.googlecode.com/git-history/v15.0/javadoc/com/google/common/collect/Multimaps.html#newListMultimap%28java.util.Map,%20com.google.common.base.Supplier%29:
ListMultimap<Integer, String> mhm = Multimaps.newListMultimap(
new TreeMap<Integer, Collection<String>>(),
new Supplier<List<String>>() {
public List<String> get() {
return Lists.newArrayList();
}
});
在 Java 8 中它更短:
ListMultimap<Integer, String> mhm = Multimaps.newListMultimap(
new TreeMap<>(), ArrayList::new);
但如果您使用的是 Guava 16+(现在应该),您可以使用MultimapBuilder http://docs.guava-libraries.googlecode.com/git-history/v18.0/javadoc/com/google/common/collect/MultimapBuilder.html这是更干净的:
ListMultimap<Integer, String> mhm = MultimapBuilder.treeKeys().arrayListValues().build();
因为你可以将multimap视为map key -> collection,只需使用JDK的TreeMap http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html这是根据其键的自然顺序排序.
Example:
mhm.put(2, "some");
mhm.put(1, "value");
mhm.put(2, "here");
System.out.println(mhm.toString());
// { 1: [ "value" ], 2: [ "some", "here" ] }