JUNG 1.7.6에서이 목적을 위해 copy() 함수가 있었지만 (myGraph.copy()) JUNG 2.0에서는이 함수가 더 이상 존재하지 않습니다. 그래프 개체의 복사본을 만들 수있는 다른 가능성을 찾지 못했습니다. 누군가가 나를 도울 수 있다면 정말 기뻐할 것입니다. 해결 방법도 좋을 것입니다.JUNG 2.0 프레임 워크에서 그래프를 복사하는 방법은 무엇입니까?
고맙습니다.
JUNG 1.7.6에서이 목적을 위해 copy() 함수가 있었지만 (myGraph.copy()) JUNG 2.0에서는이 함수가 더 이상 존재하지 않습니다. 그래프 개체의 복사본을 만들 수있는 다른 가능성을 찾지 못했습니다. 누군가가 나를 도울 수 있다면 정말 기뻐할 것입니다. 해결 방법도 좋을 것입니다.JUNG 2.0 프레임 워크에서 그래프를 복사하는 방법은 무엇입니까?
고맙습니다.
모든 정점과 모든 가장자리를 반복하여 그래프를 복사하고 새 그래프에 추가하여 그래프를 수동으로 복사 할 수 있습니다. 당신이 당신의 Graph<String, String>
에 대한 String
와 V
및 E
를 교체해야하므로, 제네릭
코드 아래 API에 getVertices()를 참조하십시오.
Graph<V, E> src;
Graph<V, E> dest;
for (V v : src.getVertices())
dest.addVertex(v);
for (E e : src.getEdges())
dest.addEdge(e, src.getIncidentVertices(e));
이것은 기본적으로 정확 합니다만, 하나의 질의와 하나의 향상 : (1) V, E를 String으로 대체하지 말고 그래프의 유형으로 바꾸십시오 (그리고 자신 만의 정적 방법도 필요하지 않거나 그것을하고 싶지 않습니다). (2) 모든 정점에 인시던트 엣지가있는 선험적 지식이 있고 정이 제공하는 그래프 클래스를 사용하는 경우 첫 번째 루프를 생략 할 수 있습니다. addEdge가 없으면 인시던트 가장자리를 추가합니다. –
당신은 정점의 간단한 복사를 할 수있는 새로운 그래프를 만들 것입니다,하지만 내부 참조에 의해 전달 될 객체가이 복제 라이브러리를 https://code.google.com/p/cloning/
을 사용하고을 할 수 있도록 & 가장자리, 전체 복사 :
Cloner cloner = new Cloner();
Graph<V, E> clonedGraph = cloner.deepClone(graph);
나는이 그래프는 <문자열, 문자열> 함수 getVertices()을 정점으로 수집를 반환해야합니다. getEdges() 함수는 가장자리 ID가있는 콜렉션을 반환하지만이 가장자리로 연결된 꼭지점을 얻지 못합니다 ... 특정 가장자리로 연결된 꼭지점을 확인하는 유일한 방법은 graph.toString() method ... –
user1377963