我有一个不断添加项目到TreeMap的任务,和 当某些条件出现时,它也会从TreeMap中删除刚插入的项目 在这个项目上遇到了。
我知道TreeMap的复杂性在插入/删除时都是O(log-n)。以来 任务已保存已删除的项目的所有信息,包括:键,值 也许是位置信息。如果JDK具有支持的数据结构 删除具有位置信息的元素,时间复杂度即可 恒定并减少我的任务的一半计算时间。
是否有任何一种数据结构支持此功能,删除带位置的条目, 和其他操作在JDK中的O(log-n)的复杂性?
答案 0 :(得分:1)
您并不完全清楚自己的要求,但如果用例是要还原最后的 n 插入,那么持久树可能会有所帮助。在每个阶段,树都是不可变的,并且插入会创建一个与前一个状态尽可能相同的新树,因此通过保持对先前状态的引用,您可以在恒定时间内删除插入的元素。
你需要谷歌用于java实现,它们不在JDK中。