java - 如何在不更改值顺序的情况下反转 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 的一些公共集合实用程序,但没有立即看到任何可以解决问题的方法。
没有一堆循环的最干净的方法是什么?
解决方案
我认为您只能使用 LinkedHashMap 来存储这样的列表,因为它不是按字母顺序排列的。但是 LinkedHashMap 保持添加元素的顺序,所以会很好。
我认为没有什么比将所有地图条目(可通过entrySet()方法获得)放入 ArrayList 中,然后通过遍历该数组以相反的顺序将它们添加到另一个地图中更简单的事情了。如果它是反向迭代器,我们可以派生一个交换它们的类,但看起来没有迭代器会以相反的顺序移动,所以覆盖不是一种选择。
创建映射后更改键的哈希码不会更改顺序,因为存储桶已经存在。但是,它可能会阻止地图正常工作。
推荐阅读
- c# - Android SDK 包列表更新失败
- php - 将硬编码数组合并功能转换为 PHP 中的动态代码
- javascript - 用纯 JavaScript 捕获 SVG onresize()?
- google-chrome - 来自不同 HTTP 流服务器的 HTTPS 站点上的流式广播
- php - Homecontroller在php中不存在错误
- android - 如何将每一个 RecyclerView 数据放到一个文件中
- python - 退出命令停止python文件执行
- angular6 - 如何在特定列的角度材料数据表中进行过滤
- dialogflow-es - 如何处理音频的结束?
- java - 我正在尝试创建动态 EditText 但出现错误