Я пытаюсь реализовать родовое дерево.Использование общего списка в качестве параметров varargs
У каждого дерева есть value
, parent
и его children
. Дети добавляются с помощью следующего метода:
public Tree<T> addChildren(Tree<T>... children) {
for (Tree<T> child: children) {
if (this.children.add(child)) {
child.setParent(this);
}
}
return this;
}
проблема начинается, когда у меня есть List
Деревьев я хочу добавить как дети:
List<Tree<T>> newChildren;
С there is no way to create array of parametrized type в Java, наиболее очевидным решением является для перебора списка и добавления детей один за другим:
for (Tree<T> newChild: newChildren) {
myTree.addChildren(newChild);
}
Но это неэффективное использование varargs. Поскольку я хочу сохранить класс Tree
как можно проще, есть ли другой способ его реализации?
Почему вы не создать функцию, которая принимает список деревьев? – cy3er
@ cy3er Потому что я хочу, чтобы этот класс был как можно более простым. – Kao
Я думаю, что добавление метода, который принимает список, так же просто, как и получается. Это, безусловно, самый простой подход, который я мог придумать, и когда дело доходит до читаемости/проверки, я определенно предпочитаю два разных метода для двух разных вещей (добавление детей и добавление деревьев). Как вы упоминаете _efficiency_: это не получается лучше, чем O (n) :) –