【发布时间】:2015-07-27 13:11:31
【问题描述】:
我有一个边列表,用于无向图,保存在 var edges: List[Edge] 中。其中一些是。
A, B, 6
B, A, 6
A, D, 4
D, A, 4
B, C, 10
C, B, 10
B, D, 7
D, B, 7
B, E, 7
E, B, 7
C, D, 8
D, C, 8
C, E, 5
E, C, 5
C, F, 6
F, C, 6
D, E, 12
E, D, 12
E, F, 7
F, E, 7
我正在尝试将它们放入邻接列表中,以这种方式:
val adjList: List[(Vertex, List[Vertex])] =
(graph.edges.groupBy(_.source).map
{ case (k,v) => (k, v.map {_.destination}) }).toList
但是,它不起作用。我做错了什么? :(
编辑:
没错(我的错,看我下面的评论)!
【问题讨论】:
-
“但是,它不起作用”是什么意思?你得到哪个错误/输出?
-
@Valerin,不,List[T] 只有一个类型参数。
-
您可以使用
mapValues使其稍微简单一些:edges.groupBy(_.source).mapValues(edges => edges.map(_.destination)).toList -
您可以查看scala-graph.org 以供参考。或者可以作为一个现成的库使用
-
如果你修复了这个问题,你应该添加一个答案并标记它以防止它被注册为“未回答”
标签: scala graph adjacency-list