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。我不确定如何将对象转换为每个顶点的两个单独的字符串。
任何帮助都会很棒,谢谢!
编辑:稍微澄清一下
答案 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
类型。