【发布时间】:2015-06-07 20:27:36
【问题描述】:
我在 Java 中定义了一个 Stack<String>,用于在工作流中导航。
我想做的是确保堆栈中的所有值都是唯一的:当发生到“先前”状态的转换时,我想在堆栈中第一次出现前一个状态之后从堆栈中删除所有内容.
有没有简单的方法可以做到这一点?
编辑:要求提供更多信息。以下是堆栈内容的示例:
[state2, state3, state2, state1, startState]
我需要能够接受一个字符串,检查堆栈并查看它是否多次出现,然后弹出元素直到该字符串的“最底部”出现。 “截断”可能是对我想要做的事情的错误描述......“弹出直到我达到任意索引”可能更接近我的需要。
【问题讨论】:
-
弹出直到到达之前的状态?似乎没有那么“难”;虽然“第一次出现”可以使用澄清 - 例如最接近堆栈的顶部或底部?
-
堆栈中存在重复字符串的可能性很小。如果我从堆栈中弹出,我需要弹出直到第一次出现该字符串。如果我使用列表,我会获取索引并创建一个 subList,但没有 subStack 这样的东西。
-
您能否进一步澄清这意味着什么?当前的描述意味着像流行音乐将删除头部以及除了头部下方的值 1 之外的所有其他内容?
-
@Jason,Stack 实现了 List(在许多其他接口中)。所以你仍然可以得到一个子列表。
标签: java