我正在开发一个对自动机执行一些操作的程序。自动机由状态(又名节点)和转换(又名边)组成,我需要过滤它们以检索具有特定属性的集合。这个操作很容易实现,但是要执行几次,我会在上面写一点缓存。
在下面的代码片段中有我的实现,我想知道是否是过滤和记忆 observable transitions 的正确方法。
public class Automata {
private State initial;
private Set <State> states;
private Set <Transition> transitions;
private Supplier <Set <Transition>> observables;
// ...
public Automata() {
this.initial = new State();
this.states = new HashSet <> ();
this.transitions = new HashSet <> ();
this.observables = Suppliers.memoize(() ->
transitions.stream().filter((t) ->
(t.isObservable() == true)).collect(Collectors.toSet()));
}
public getObservables() {
return observables.get();
}
}
问题:
- 这是对的吗?
- 如果转换改变了其可观察性,此信息是否也会传播给供应商?
我很抱歉我的英语很差,我希望这足够清楚。