【发布时间】:2016-08-09 15:29:49
【问题描述】:
我想将用户到他们朋友的地图转换为朋友到他们朋友的地图。 输入用户名:字符串 因此,通过将每个 List[User] 设为键,将 Map[Username, List[User]] 映射到 Map[Username, List[Username]]。
我下面的代码非常类似于 java,我想重构它以使其更具 idomatic scala 代码。
val map: Map[String, List[User]] = {
var m = collection.mutable.Map[String, collection.mutable.ListBuffer[User]]()
for(user <- users) {
for(friend <- user.Friends) {
if (m.contains(friend)) {
//m.get(friend.username) += user
} else {
m += (friend -> collection.mutable.ListBuffer[User]())
//m.get(friend.username) += user
}
}
}
m.map{e =>
(e._1 -> e._2.toList)}.toMap
}
我开始尝试这个:
users.map( user =>
user.friends.flatMap(friend =>
)
作为旁注,我如何附加到 ListBuffer,由于某种原因这对我不起作用:
m.get(friend.username) += user
而新建一个列表缓冲区和追加将如何完成?
【问题讨论】:
-
换句话说,你想达到什么目的?
-
我想用更多的函数风格转换代码。
-
尝试类似“我将名称作为字符串,每个名称都指向带有地图的相应朋友的列表 [字符串],我正在尝试计算
” -
凉风你接受答案了吗?
-
@Alec 我用一些措辞更新了我的问题。
标签: scala