java - TreeMaps 会自动对键进行排序吗?
问题描述
在使用 HashMap 存储 Player 对象和 Integer 时,我在对 HashMap 进行排序时卡住了,建议使用 TreeMap,在阅读了一些文档后,似乎它根据输入的键对地图进行了排序。
所以理论上,如果我制作了 TreeMap,它会为我排序地图吗?
解决方案
是的,如果您调用yourmap.keySet().iterator()
,它会根据键以升序返回元素。这是它们的自然顺序或您定义的比较器。在内部,它可能会像这样使用 Inorder -Traversal:
您会看到,每个节点的左子树上的值较小,而右侧的值较大。因此,如果您首先列出左侧的元素,然后是节点本身,然后是右侧的所有元素,则按升序排列。如果您递归地将此规则应用于每个节点,您将收到您想要的迭代器。
您可以在此处找到有关如何在 Java 中使用它的示例。
请记住,HashMap 的查找时间为 O(1),但 TreeMap 的查找时间为 O(log(n))。除非您依赖键的顺序,否则您应该使用 HashMap,因为它更快。
推荐阅读
- slack-api - 作为机器人搜索 Slack 消息
- php - 在客户详细信息之后,WooCommerce 的普通电子邮件通知有什么钩子?
- javascript - Gatsby ReactJS 从模块无限加载中导入 CSS
- json - 使用 kotlinx.serialization 将 json 对象属性反序列化为字符串
- vue.js - Vue中的多个因变量
- jupyter-notebook - 如何将单元格字体从 Jupyter 笔记本中的代码(在编辑模式下)更改回正常模式?
- java - 我可以在谷歌地图上打开确切的位置吗?
- rxjs - RxJS:如何循环和处理多个 http 调用
- php - Laravel - 如果给定数组中不存在,则从数据库中删除记录
- floating-point - 为什么这里需要接口才能获得正确的结果