2012-09-14 95 views
1

的類型和收集的名單我有一個集合,其中每個節點是A類或A類的集合的Java數據結構類型

這也遞歸在一個類的集合中的每個節點可能是A類或A類的集合。

我目前只是使用List,然後檢查Object以查看它是Class A還是Class A的列表,但似乎打敗了使用泛型的目的。我想我需要更多像結構樹一樣的樹。思考?

回答

1

考慮創建一個類(Wrapper<ClassA>),可以容納任何的ClassAList一個實例。然後讓你的Lists和內部ListsList<Wrapper<ClassA>>

+0

如果您可以在混亂的設計模式下實施混合設計模式,那會更好,但這可能是不可能的,因爲對於元素列表可能無法進行操作。 –

+0

是的,在我的情況下,我只需要獲取對象,而不是對它執行操作。仍然所有的建議都符合我的想法,所以這是一個好兆頭! – Kenoyer130

+0

僅供參考,FunctionalJava有一個可能有用的Either類:http://functionaljava.googlecode.com/svn/artifacts/3.0/javadoc/fj/data/Either.html –

2

當你實例化一個泛型類型時,你仍然會在集合中存儲同類類型。在現實世界中,你這樣做的方式是建立一個共同的媒介,容器或將A類和B類結合在一起的界面。您可以使用界面來操作這些對象。

或者,您可以將對象默認爲列表。明白了嗎?

0

你應該定義類節點像下面

public class Node { 
     List<Node> children = new ArrayList<Node>(); 
    }