首页 > 解决方案 > 如何在不更改值顺序的情况下反转 TreeMap 的键顺序?

问题描述

我有一个TreeMap这样的:

{
    "one": "First option",
    "two": "Second option",
    "three": "Third option",
    "four": "Last option"
}

我想使用这个对象,以便输出是这样的:

{
    "four": "First option",
    "three": "Second option",
    "two": "Third option",
    "one": "Last option"
}

我正在查看 apache 的一些公共集合实用程序,但没有立即看到任何可以解决问题的方法。

没有一堆循环的最干净的方法是什么?

标签: javasortingdictionaryhashmaptreemap

解决方案


我认为您只能使用 LinkedHashMap 来存储这样的列表,因为它不是按字母顺序排列的。但是 LinkedHashMap 保持添加元素的顺序,所以会很好。

我认为没有什么比将所有地图条目(可通过entrySet()方法获得)放入 ArrayList 中,然后通过遍历该数组以相反的顺序将它们添加到另一个地图中更简单的事情了。如果它是反向迭代器,我们可以派生一个交换它们的类,但看起来没有迭代器会以相反的顺序移动,所以覆盖不是一种选择。

创建映射后更改键的哈希码不会更改顺序,因为存储桶已经存在。但是,它可能会阻止地图正常工作。


推荐阅读