首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中undo和redo的实现

Java中undo和redo的实现
EN

Stack Overflow用户
提问于 2011-09-11 04:36:59
回答 4查看 3.5K关注 0票数 3

我想问一个关于Java中List的问题。

在列表中实现删除、添加和搜索元素是很容易的。但是如何在Java中实现列表的撤销和重做呢?

有人能在这方面帮我吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-11 04:40:31

您可能希望为此实现一个Command Design Pattern。可以在http://www.algosome.com/articles/implementing-undo-redo-java.html中找到List的一个很好的简化示例

票数 4
EN

Stack Overflow用户

发布于 2011-09-11 04:51:40

我猜你想要撤消和重做列表上的删除和添加等操作。

只需使用另一个具有撤消和重做索引功能的列表,例如ArrayList:

  • 每次向原始列表添加(元素)或删除(元素)确实更改了该列表时,您将该元素放在撤消列表的末尾。
  • 然后当你想撤销操作时,你只需在撤销列表中移动:如果撤销列表中的元素不在原始列表中,添加它,如果它存在于原始列表中,删除它。
  • 如果你也想使用你的撤销列表来重做,那么不要从撤销列表中删除你刚刚“撤销”的元素,而是通过索引在撤销列表中移动。然后您可以在撤消列表的两个方向上移动,从而撤消和重做您的操作。
票数 1
EN

Stack Overflow用户

发布于 2011-09-11 04:47:05

你的意思是像从列表中删除项目并撤消它?您可以轻松地为列表创建新类,并定义如下属性:上次执行的操作+存储受影响项的原始值(可能还有索引)。重做也是如此(至少重做和撤消中的一个步骤是如此)。如果您不关心项目的顺序(或者您可以轻松地对它们进行排序),那么可以定义上次执行的操作列表和原始值列表。例如: lastAction="delete";lastElement = 1;//表示从列表中删除了1

这是第一个也是虚拟的想法如何做到这一点。也许有一些问题需要考虑……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7374545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档