3

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

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

谁可以帮我这个事?

4

4 回答 4

4

您可能希望为此实现一个Command Design PatternList可以在这里找到一个体面的简化示例http://www.algosome.com/articles/implementing-undo-redo-java.html

于 2011-09-10T20:40:30.743 回答
1

我猜您想撤消和重做删除和添加列表等操作。

只需对 Undo 和 Redo 使用另一个具有索引功能的列表,例如 ArrayList:

  • 每次原始列表的添加(元素)或删除(元素)确实更改了该列表,您将元素放在撤消列表的末尾。
  • 然后,当您想要撤消操作时,只需在撤消列表中移动:如果撤消列表中的元素不在原始列表中,则添加它,如果它存在于原始列表中,则将其删除。
  • 如果您也想使用您的撤消列表进行重做,那么不要从撤消列表中删除您刚刚“撤消”的元素,而是通过索引在撤消列表中移动。然后,您可以双向移动撤消列表,从而撤消和重做您的操作。
于 2011-09-10T20:51:40.363 回答
0

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

这是第一个也是愚蠢的想法。也许有一些问题需要考虑......

于 2011-09-10T20:47:05.247 回答
0

你需要绑定才能做到这一点。

对我来说,这是最有效的方法。SO的这个问题可以给你一些关于从哪里开始的提示。

于 2011-09-10T20:57:36.150 回答