B树实现 - 我应该将Node类作为静态成员类吗?
我需要为大学实现B-Tree:
我有一个“外部”类B-Tree,其属性为root和_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类实现为静态成员类时,我无法访问外部类的degree属性。
现在我必须做出选择:
使Node类成为内部类(非静态成员类)OR
为Node类创建一个构造函数,并在每次构建Node时传递度。
什么是最好的选择?使它成为一个内部类意味着节点都将引用Btree(外部类),但是使它成为一个静态成员类意味着我必须每次都通过该程度。
没有找到相关结果
已邀请:
3 个回复
可扇胆
不知道有关
的任何细节。
席酱
类公开,所以我可以在其他包含数据结构中重用它,但那只是我。在那种情况下,我必须通过构造函数传递学位,这对我也没问题。我不喜欢内部类操纵封闭类成员的想法。我觉得这使得课程彼此紧密联系。我知道有时它是合适的,但是当我可以的时候我会避免,这似乎是一个容易避免的案例。
锑寝粒