如何解决优化数据获取
我有一个 TreeMap
private final TreeMap<Integer,SXSSFRow> rows = new TreeMap<>();
但我想在恒定时间 O(1) 内从 rows
检索数据
这样您就不必在每次迭代时都在后面阅读 (log n)。
我能为此做些什么?
也许将数据从 TreeMap 转移到另一个数据结构,但它会高效吗?
解决方法
如果您想在恒定时间内进行查找,即使在最坏的情况下,您也需要除 Map
数据类型之外的其他内容。
使用 TreeMap
,查找在所有情况下都是 O(log n)。
使用 HashMap
,查找平均为 O(1),但在最坏的情况下可以达到 O(n)。
如果你想在所有情况下进行 O(1) 查找,你需要一个数组,但数组的大小可能会变得太大而无法使用。如果你对键做了一些事情,比如模数或散列来减小数组的大小,恭喜你,你只是在最坏的情况下重新发明了 HashMap
(使用 O(n)因为碰撞的情况)。
顺便说一句,对于HashMap或数组,转移到另一个数据结构将花费O(n),因此如果您读取的内容少于O(n),则效率不高行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。