从二分匹配访问 Set<> 边中的元素

Accessing elements in a Set<> of edges from BipartiteMatching

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

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

我必须使用 Jgrapht 在一个简单的图形中找到两个集合的最大匹配。我的方法是 HopcroftKarpBipartiteMatching、getMatching(),它 returns 边的 Set<>。我的问题是,如何访问集合的元素?

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

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

编辑:一点说明

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

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

使用时

Iterator it = match.iterator();

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