我正在使用 Java 开发一些金融算法。我有一个复杂的数据结构,其中有许多属性需要在算法的生命周期内更新。有时这个数据结构被更新超过1000次...
为了提高性能,尤其是 get(search)/update/insert
,我决定使用 TreeMap
作为容器,在这方面效率很高。
现在是具有挑战性的部分。我需要更新我需要从需要的容器中检索它的数据结构属性:
- 检查容器是否有对象
- 如果是,则获取对象,否则创建新对象并添加到 map
- 如果对象存在于容器中则更新对象
这个过程需要三个 x log(n),即检查、获取和放置。我想在 SINGLE log(n) 时间内完成此操作。
为此,我的解决方案是:
我总是使用 put
在 map 中添加对象 (insert/update/get
)。 put
返回旧对象,我用旧值更新当前对象,这解决了 log(n) 但不同的对象丢失了对先前对象的引用,因为新值在映射中被替换。
是否有更好的解决方案或更好的容器来更新数据结构。我可以使用 List
并使用集合的二进制搜索,但为此我需要再次对数据结构进行排序,因为列表未排序。
请指导
最佳答案
我觉得你做得很好。
O(k.log(n)) = O(log(n))
其中 k 是常数。所以你的时间复杂度实际上是 O(log(n))
关于java - 在 log(n) 时间内插入和更新,性能更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35060529/