我需要實現一個B-Tree的大學:B-Tree的實現 - 我應該讓Node類是一個靜態成員類還是不是?
我有一個 「外」 類的B-Tree與屬性根和_degree。代表節點的類作爲一個靜態成員類實現:
public class BTree<E> {
private Node<E> root;
// the minimal degree
private int degree;
public BTree(int degree) {
if (degree < 2) {
throw new IllegalArgumentException();
}
this.degree = degree;
}
// other stuff
private static class Node<T> {
T[] elements = (T[])new Object[degree * 2 - 1];
Node<T>[] children = (Node<T>[])new Object[degree * 2];
int size = 0;
}
}
所以,現在我的問題是:當我實現了Node類的靜態成員類,我無法訪問的程度屬性外部類。
現在我必須選擇:
- 使Node類的內部類(非靜態成員類)或
- 爲節點創建類的構造,並通過在每一個我需要時間度構建一個節點。
什麼是最佳選擇?使它成爲內部類將意味着節點都將引用Btree(外部類),但將它作爲一個靜態成員類將意味着我必須每次都通過該學位。
Node是否需要內部類?你有沒有改變BTree設計的自由? – athena 2010-08-17 15:30:49
@athena我有自由,但我喜歡使用嵌套類來增加封裝^^。 – helpermethod 2010-08-17 15:48:22