你的意思是这样吗?
public class Lexicon {
class State {
public long count = 0;
public long stateNo;
public Set<Arc> arcs;
}
class Arc {
public char character;
public State destState;
public Set<String> letters;
}
Set<State> states = new HashSet<State>();
public void update(long stateNo, char character, String letter) {
for (State state : states) {
if(state.stateNo == stateNo) {
for (Arc arc : state.arcs) {
if (arc.character == character) {
arc.letters.add(letter);
break;
}
}
break;
}
}
}
}
如果是这样,你最好使用地图收藏改写:
public class Lexicon {
class State {
public long count = 0;
public long stateNo;
public Map<Character, Arc> arcs;
public void updateArc(char character, String letter) {
Arc arc = arcs.get(character);
if (arc != null) {
arc.letters.add(letter);
}
}
}
class Arc {
public char character;
public State destState;
public Set<String> letters;
}
Map<Long, State> states = new HashMap<Long, State>();
public void update(long stateNo, char character, String letter) {
State state = states.get(stateNo);
if (state != null) {
state.updateArc(character, letter);
}
}
}
当然这只是草案,你摇头初始化所有集合。 也为了清晰起见,所有字段都声明为公开。
你有没有参考你需要更新的状态? – 2013-03-07 10:36:24
stateno可以识别正确的状态,count是保持stateNo不唯一的静态变量。 – 2013-03-07 10:57:27
在这种情况下,我同意推荐使用Map的答案。更具体地说,你应该有一个地图,你可以使用它来找到一个状态给定其状态。同样,你需要决定如何找到你想改变的弧,给定一个国家。 –
2013-03-07 11:01:21