2013-04-25 40 views
0

enter image description here提取子列表

我使用jung库构建超图

Hypergraph hypergraph = new SetHyperGraph<Vertex,HyperEdge>(); 

然后我加我所有的顶点(图像,标签,位置)

hypergraph.addVertex() 

    ArrayList<Vertex> allVertex = hypergraph.getVertices; 

现在我想从我的列表中只提取图像顶点allVertex

为什么这条指令是非法的?

ArrayList<ImageVertex> allImageList=allVertex.subList(0,j); 

有没有人有另一种解决方案?

+0

由于'allVertex'还可以含有'TagVertex'和'ImageVertex'和java无法搞清楚在编译时间。 – lifus 2013-04-25 19:50:43

+0

@lifus有什么建议吗? – nawara 2013-04-25 19:55:31

+0

用于for instanceof的循环。顺便说一下,塔尔萨拉回答了比我更清楚的问题。 – lifus 2013-04-25 19:56:56

回答

1

只是一个示例代码

List<ImageVertex> allImageList = new ArrayList<ImageVertex>(); 
for (Vertex vertex : allVertex) { 
    if (vertex instanceof ImageVertex) { 
    allImageList.add((ImageVertex) vertex); 
    } 
} 
1

因为ArrayList<ImageVertex>不是ArrayList<Vertex>subtype

可能的解决方案将是:

ArrayList<ImageVertex> allImageList= new ArrayList<>(); 

for (Vertex vertex: allVertex.sublist(0,j)) { 
    if (vertex instanceof ImageVertex) { 
     allImageList.add((ImageVertex) vertex); 
    } 
} 
+0

任何建议? – nawara 2013-04-25 19:56:27

+0

尝试循环抛出所有'Vertex'列表,并使用'instanceof'方法获取'ImageVertx'元素。 – tarrsalah 2013-04-25 20:02:14

+0

我相信j是ImageVertex的数量,但似乎nawara想要提取所有图像顶点。另外,请将投影添加到'ImageVertex'。 – lifus 2013-04-25 20:21:05