我有一个集合,其中每个节点要么是 A 类,要么是 A 类的集合。
这也是递归的,因为 A 类集合中的每个节点都可以是 A 类或 A 类的集合。
我目前只是使用 List,然后检查 Object 以查看它是 Class A 还是 Class A List,但这似乎违背了使用泛型的目的。我想我需要一个更像树的结构。想法?
我有一个集合,其中每个节点要么是 A 类,要么是 A 类的集合。
这也是递归的,因为 A 类集合中的每个节点都可以是 A 类或 A 类的集合。
我目前只是使用 List,然后检查 Object 以查看它是 Class A 还是 Class A List,但这似乎违背了使用泛型的目的。我想我需要一个更像树的结构。想法?
看看复合设计模式。
当您实例化一个泛型类型时,您仍然会在集合中存储同质类型。在现实世界中,您这样做的方式是建立一个将 A 类和 B 类绑定在一起的通用介质、容器或接口。您使用界面来操作这些对象。
或者,默认情况下,您可以将对象视为列表。明白了吗?
考虑创建一个类 ( Wrapper<ClassA>
),它可以包含 的实例ClassA
或List
. 然后让你Lists
和内在Lists
成为List<Wrapper<ClassA>>
您应该定义类节点,如下所示
public class Node {
List<Node> children = new ArrayList<Node>();
}