java - Google multimap 自动对键进行排序

标签 java guava

我创建了一个像这样的多重 map :

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

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

最佳答案

ArrayListMultimap 的 Javadoc 指定:“HashMap 将每个键与值的 ArrayList 相关联。”因此,就像 HashMap 一样,键是任意排序的。

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

关于java - Google multimap 自动对键进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204178/

相关文章:

java - 选择条形图类别标签

java - 循环没有给出想要的结果,卡住了

java - readLine()怎么会出现空指针异常呢?

java - 如何将小 Canvas 放在较大的 jframe 上居中

java - Maven编译导致ClassNotFoundException

java - 如何生成由函数支持的列表?

java - 如何在DataProvider中获取testng类参数

jakarta-ee - 谷歌缓存可以在集群环境中工作吗

java - 使用 Guava Iterables.cycle 作为循环列表实现

java - Google Guava Bloom Filter 线程安全吗?