簡體   English   中英

如何使用org.jgrapht迭代Graph並列出所有連接

[英]How to iterate Graph and list all connections with org.jgrapht

我正在嘗試雇用

compile group: 'org.jgrapht', name: 'jgrapht-core', version: '1.1.0'

可視化團隊和團隊成員之間的關系。

例如:-

“第一個團隊”有成員“ A成員”,“ B成員”,“ C成員”

“第二小組”有成員“ C小組成員”,“ D小組成員”

所以我添加了以下頂點

final Graph<Displayable, DefaultEdge> directedGraph = new DefaultDirectedGraph<>(DefaultEdge.class);

directedGraph.addVertex(team_0001);
directedGraph.addVertex(team_0002);
directedGraph.addVertex(teamMember_A);
directedGraph.addVertex(teamMember_B);
directedGraph.addVertex(teamMember_C);
directedGraph.addVertex(teamMember_D);

directedGraph.addEdge(team_0001, teamMember_A);
directedGraph.addEdge(team_0001, teamMember_B);
directedGraph.addEdge(team_0001, teamMember_C);
directedGraph.addEdge(team_0002, teamMember_C);
directedGraph.addEdge(team_0002, teamMember_D);

當我遍歷此圖時,我想要以下輸出:-

Team_0001
  teamMember_A
  teamMember_B
  teamMember_C

Team_0002
  teamMember_C
  teamMember_D

我該如何實現?

我必須開發一個客戶圖迭代器嗎?

根據定義,您的圖形是兩部分的:{分區1 =團隊頂點,分區2 =玩家頂點}。

因此,只需維護一個Team頂點列表,然后為每個頂點調用Graphs.neighborListOf(.)

List<Displayable> teams=...; for(Displayable v : teams) System.out.println("Team"+v+" has the following members: "+Graphs.neighborListOf(teamGraph,v);

另外,由於圖形是有向的,因此可以遍歷邊緣:

for(DefaultEdge e : teamGraph.edgeSet()) System.out.println(String.format("Player %s belongs to team %s",teamGraph.getEdgeTarget(e), teamGraph.getEdgeSource(e)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM