从二分匹配访问 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
类型。
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
类型。