我正在使用 Java Jung 2.01 图形包在图论中进行一些分析。我的算法采用 a Forest<V, E>
,然后我可以转换为 a DelegateForest<V,E>
,因此我可以使用该getTrees()
方法获取森林组件的实例。我的算法是递归的,将在该getTrees()
方法的每个组件上执行。
所以,问题是返回类型getTrees()
是一个集合,Tree<V, E>
因为我的算法需要一个Forest<V, E>
(并且在某些时候强制转换为DelegateForest<V, E>
)并且我希望在我的森林的每个树组件上执行我的算法,我得到一个 ClassCastException 说明我不能从 转换DelegateTree<V, E>
为DelegateForest<V, E>
。
这是我的一些代码:ArrayList<Forest<String, Integer>> treeComps = new ArrayList<Forest<String, Integer>>(forest.getTrees());
第一行只是将森林的树组件存储到一个 ArrayList 中。
((DelegateForest)forest).removeVertex(vertexCentralities.first().getKey(), false);
此演员表来自我的算法,该算法删除了树中的一个顶点,并保留了该顶点的子树。这就是为什么我需要演员DelegateForest<V, E>
- 如何从我的森林中提取树木,使树木具有类型
Forest<V,E>
,以便我DelegateForest<V, E>
以后可以毫无问题地处理? - 我需要修改源代码吗?
- 还有其他想法吗?