Это просто уродливая попытка:
Предположим, вы преобразовали свои два столбца в Array[Array[String]]
(или List[List[String]]
, это действительно одно и то же), скажем
val pairs=Array(
Array("A","B"),
Array("A","C"),
Array("A","D"),
Array("B","A"),
Array("B","C"),
Array("B","D"),
Array("B","E"),
Array("C","A"),
Array("C","B"),
Array("C","D"),
Array("C","E"),
Array("D","A"),
Array("D","B"),
Array("D","C"),
Array("D","E"),
Array("E","B"),
Array("E","C"),
Array("E","D")
)
Определитегруппа, для которой вы хотите найти своих общих друзей:
val group=Array("C","D")
Следующая команда найдет друзей для каждого члена вашей группы
val friendsByMemberOfGroup=group.map(
i => pairs.filter(x=> x(1) contains i)
.map(x=>x(0))
)
Например, pairs.filter(x=>x(1) contains "C").map(x=>x(0))
возвращаетдрузья из "C"
, где "C"
берется из второго столбца, а его друзья - из первого столбца:
scala> pairs.filter(x=> x(1) contains "C").map(x=>x(0))
res212: Array[String] = Array(A, B, D, E)
И следующий цикл найдет общих друзей всех участников в вашем столбце.group
var commonFriendsOfGroup=friendsByMemberOfGroup(0).toSet
for(i <- 1 to friendsByMemberOfGroup.size-1){
commonFriendsOfGroup=
commonFriendsOfGroup.intersect(friendsByMemberOfGroup(i).toSet)
}
Таким образом, вы получаете
scala> commonFriendsOfGroup.toArray
res228: Array[String] = Array(A, B, E)
Если вы измените свою группу на val group=Array("A","B","E")
и примените предыдущие строки, то вы получите
scala> commonFriendsOfGroup.toArray
res230: Array[String] = Array(C, D)