访问集合中的元素<>来自BipartiteMatching的边缘

时间:2015-12-01 17:29:11

标签: java jgrapht

    HopcroftKarpBipartiteMatching<String, DefaultEdge> alg = new HopcroftKarpBipartiteMatching<String, DefaultEdge>(sg, setO, setM1);

    Set<DefaultEdge> match = alg.getMatching();
    System.out.println("Match: " + match);

我必须使用Jgrapht在一个简单的图形中找到两组的最大匹配。我的方法是HopcroftKarpBipartiteMatching,getMatching(),它返回一个Set&lt;&gt;边缘。我的问题是,你如何访问集合的元素?

每个元素都是由两个顶点组成的边。我需要能够单独访问和检查两个顶点,但我不知道如何。我尝试使用迭代器并使用方法match.toArray(),但它返回Objects。我不确定如何将对象转换为每个顶点的两个单独的字符串。

任何帮助都会很棒,谢谢!

编辑:稍微澄清一下

1 个答案:

答案 0 :(得分:2)

您需要为迭代器指定泛型类型。

Iterator<DefaultEdge> it = match.iterator();
while (it.hasNext()) {
    DefaultEdge currentEdge = it.next();
    //Do something with your edge...
}

使用时

Iterator it = match.iterator();

您将获得对Object个实例的引用。但是你可以将它们转换为你的DefaultEdge类型。