Google multimap会自动对键进行排序

时间:2014-04-21 19:12:03

标签: java guava

我创建了一个这样的多图:

private ListMultimap<String, int[]> terrainMap = ArrayListMultimap.create();
{
    terrainMap.put("Terrain.Ground", new int[] {0,100,300,0});
    terrainMap.put("Terrain.Ground", new int[] {300,200,400,0});
    terrainMap.put("Terrain.Ground", new int[] {400,250,800,0});
    terrainMap.put("Terrain.Ground", new int[] {800,500,810,0});
    terrainMap.put("Terrain.DestroyableBlock", new int[] {100,200,150,150});
    terrainMap.put("Terrain.DestroyableBlock", new int[] {500,400,600,350});
};

我想以这个特定的顺序显示它,但是当我使用foreach循环时:

for(Map.Entry<String, int[]> entry : terrainMap.entries())
{
   System.out.println(entry.getKey());
}

我得到以下结果:

Terrain.DestroyableBlock
Terrain.DestroyableBlock
Terrain.Ground
Terrain.Ground
Terrain.Ground
Terrain.Ground

好像它会在地图中按字母顺序自动排序键。我可以把它关掉吗?

1 个答案:

答案 0 :(得分:5)

ArrayListMultimap的Javadoc指定:&#34; HashMap将每个键与值的ArrayList相关联。&#34;因此,就像HashMap一样,密钥是任意排序的。

听起来您可能需要LinkedListMultimapMultimapBuilder.linkedHashKeys().arrayListValues().build()