ジェネリック TreeNode とジェネリック ツリーを実装したいと思います。stackoverflow や他の場所でいくつかの例を見てきましたが、完全には理解できませんでした。
public interface Node<K, V>
{
K getId();
V getData();
K getParentId();
void addChild(Node<K, V> child);
List<Node<K, V>> getChildren();
}
public class Tree<K, V>
{
private Node<K, V> root;
public void loadData(Map<K, V> data)
{
// by figuring out the root node from map, populate tree
// root node is the one with parentId as null
// and the logic follows. Simple level order insertion
}
}
上記のコードは私の目的を果たしていますが、これを達成するためのより良い方法があるかどうかを知りたいです。
Tree を次のように宣言します。
public class Tree<T extends Node<?, ?>
{
private T root;
public void loadData(Map<K, V> data)
{
// by figuring out the root node from map, populate tree
// root node is the one with parentId as null
// and the logic follows. Simple level order insertion
}
}
上記の場合、データ ロード メソッドはどこに配置すればよいですか? Utilクラス?
基本的に、ジェネリックである型よりもジェネリックなクラスを作成するときに従うべき原則を理解したいと思います。
ありがとう。