我需要实现一个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