例如,我有一個用於二叉樹的Node
類。添加有關現有對象的其他信息的更好方法是什麼?
public class Node {
public Node lchild;
public Node rchild; // public for convenience
}
而現在,我有一個需要記錄一些信息,有關Node
實例和只能私下使用他們的處理器。假設預訂樹中的數字遍歷。
我覺得一個直接的方式,使這是在類中添加一個字段:
public class Node {
public Node lchild;
public Node rchild;
public int no; // the number in the pre-order tree traverse
}
不過,我相信絕對是一個壞主意。所以,我現在使用的是:使用Map<Node, Integer>
public class MyProcessor {
private Map<Node, Integer> no;
public void process1(Node node) {
int id = no.get(node); // or something like this
}
}
當然,這可以解決問題。但我擔心的是:
- 頻繁訪問地圖似乎效率較低? (與加場方法相比)
- 如果我需要更多類型的信息,我需要製作更多的地圖,這似乎是一場噩夢。
那麼,請問有沒有更好的方法?謝謝!
*「不過,我相信這絕對是一個壞主意。」*爲什麼? Node是否在其他處理器中重用? –
@ T.J。Crowder是的,'Node'被廣泛分享。 – abcdabcd987
我想你可以繼承'Node'並添加儘可能多的信息。 – dejvuth