我正在嘗試構建一個TRIE,但爲此我需要樹的根可以像我想創建的那樣指向兒子(因爲它應該用作前綴樹)。對象在JAVA中如何指向許多其他對象?
所以我想知道是否有可能讓很多指針從我的根對象到我的所有輪胎的兒子? 我想看看究竟如何。
我正在嘗試構建一個TRIE,但爲此我需要樹的根可以像我想創建的那樣指向兒子(因爲它應該用作前綴樹)。對象在JAVA中如何指向許多其他對象?
所以我想知道是否有可能讓很多指針從我的根對象到我的所有輪胎的兒子? 我想看看究竟如何。
要實現一個trie,你需要一種方法來將一個字母變成對下一個節點的引用。有2點明顯的選擇:
Node[] nodes = new Node[26];
(假設英語)Map<Character, Node> map = new HashMap<Character, Node>();
數組是經典的C的做法,但因爲你是在Java中工作,我將開始與地圖關閉,因爲它更容易處理。
Java不使用術語pointers
。它使用術語references
。儘管引用在傳遞給方法時展現了諸如pass-by-value
等指針的某些行爲,但它們仍稱爲references
。
轉到實際問題。您可以使用參考文獻的Collection
。請看下面的例子:
class Node {
List<Node> children = new ArrayList<Node>();
public void addNode(Node d) {
children.add(d);
}
/*Get Nth child */
public Node getChild(int n) {
if(n<children.size())
return children.get(n);
return null;
}
}
你也可以使用一個LinkedList
代替ArrayList
取決於你想要達到的目標。 A LinkedList
將提供快速插入和刪除,而ArrayList
將爲您提供快速迭代。
謝謝你。所以當我想使用我的引用什麼是「get」方法? –
@noylevi編輯答案以演示獲取子節點的一種可能方式(獲取第N個子節點)。不要忘記點擊勾號並接受答案,如果這個答案是你正在尋找的:) – CKing
你的意思是像一個指針列表? –
您是否考慮過使用列表
是啊,我知道我只是稱他們爲... –