java - 我可以使用 java.util.Set 在 Java 中为 DFA 实现状态转换吗

标签 java computer-science set finite-automata

我正在尽可能接近正式定义的 DFA 作为学习练习(和博客 Material )

我计划在定义中涉及集合的地方使用 java.util.Set。

该定义涉及一组元组来定义合法的状态转换:(state,symbol) -> nextState。

我有一个 Transition 类,其成员包括 state、symbol 和 nextState。我已经实现了 equals() 和 hashCode() 来指示如果两个 Transitions 在状态和符号上匹配则它们是相等的。然后我有一个 java.util.Set 的 Transition 实例。

在我的处理算法中,当我读取下一个符号时,我有当前状态。我预计使用这两个构建一个 Transition 对象以从 Set 中提取匹配的 Transition,然后它会告诉我下一个状态,然后我可以迭代。

但是 - 我看不到任何提取 java.util.Set 成员以供进一步使用的方法。我可以删除(对象 o),但只会返回 boolean 值。

我做错了什么?

最佳答案

Set 可能不是您想要为此使用的。我的建议是使用 List,或者可能使用 Map>。如果不实际构建它并进行一些基准测试,我不确定哪个会更好。

关于java - 我可以使用 java.util.Set 在 Java 中为 DFA 实现状态转换吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444889/

相关文章:

java - 如何计算延迟

java - 扩展其他接口(interface)但也包含相同方法的接口(interface)

java - Elasticsearch Java API 客户端

regex - 无确定化的 NFA 最小化

c++ - 将 std::set 传递给 C++ 中的方法

java - Spring JPA 查询检查参数列表中是否至少存在一个列表元素

来自文件的 Java 迷宫

c++ - 将三个文本文件组合成一个文本文件,形成一个句子 C++

python - 如何将嵌套列表中的值转换为集合?

java - 语法混淆:Set<String> set = people.stream().map(Person::getName).collect(Collectors.toCollection(TreeSet::new))