Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 回滚撤消重做_Java_Copy_Binary Tree_Undo - Fatal编程技术网

Java 回滚撤消重做

Java 回滚撤消重做,java,copy,binary-tree,undo,Java,Copy,Binary Tree,Undo,我正在使用BST(二进制搜索树)构建一个数据库,我希望用户能够回滚最后5个命令。有什么建议吗?我正在使用Java。您考虑过使用Berkey DB吗?它是免费且受支持的嵌套事务(允许您有任意级别的回滚): 即使您决定实现自己的DB,它也可以作为参考。听起来您想要的是。基本上,您创建的对象具有以下所需的所有信息: 从操作前树的状态,重复该操作。(重做) 从操作后树的状态恢复操作。(撤消) 你会把最后五个留着。当用户要求撤销时,取最新的,要求它恢复操作,然后以某种方式(例如,某些索引变量)指出您在纪

我正在使用BST(二进制搜索树)构建一个数据库,我希望用户能够回滚最后5个命令。有什么建议吗?我正在使用Java。

您考虑过使用Berkey DB吗?它是免费且受支持的嵌套事务(允许您有任意级别的回滚):


即使您决定实现自己的DB,它也可以作为参考。

听起来您想要的是。基本上,您创建的对象具有以下所需的所有信息:

  • 从操作前树的状态,重复该操作。(重做)
  • 从操作后树的状态恢复操作。(撤消)

  • 你会把最后五个留着。当用户要求撤销时,取最新的,要求它恢复操作,然后以某种方式(例如,某些索引变量)指出您在纪念品列表中的位置。然后,您应该能够在列表中任意方向移动,任意撤销和重做。

    树有多大?如果它足够小,你可以为最后5次操作保留一份副本。不是很大。我该如何处理lat 5操作???@user475529:不要保留最后五个操作,在每次操作后复制整个树,并保留最近的五个。我想将我的树插入堆栈,当用户调用撤消时弹出它??这可能吗?/当然可以,但使用memento可以节省大量空间,同时还可以使用撤消/重做功能。