Scala package com.doit.day03
import scala.io.{BufferedSource, Source}
/** * 数据如下 :每个字母代表一个人 , 统计任意一个人和其他人的共同好友 * A:B,C,D,F,E,O * B:A,C,E,K * C:F,A,D,I * D:A,E,F,L * E:B,C,D,M,L * F:A,B,C,D,E,O,M * G:A,C,D,E,F * H:A,C,D,E,O * I:A,O * J:B,O * K:A,C,D * L:D,E,F * M:E,F,G * O:A,H,I,J */ object SameFriends { def main(args: Array[String]): Unit = { val lines: Iterator[String] = Source.fromFile("D:\\develop\\ideaWorkSpace\\myself\\study\\scalaDemo\\data\\friends").getLines() val myAndFriends: List[(String, Array[String])] = lines.toList.map(line => { // A:B,C,D,F,E,O :前面的是我自己,:后面的是我的朋友们 val arr: Array[String] = line.split(":") //获取到我自己 val user: String = arr(0) //获取到我的朋友们,朋友们都放在数组里面,里面的元素就是一个个的朋友对象 val friends: Array[String] = arr(1).split(",") (user, friends) })
//获取共同好友。。。 for(i <- 0 until myAndFriends.length){ for(j <- i+1 until myAndFriends.length){ //从第一个元素开始取 val tuple: (String, Array[String]) = myAndFriends(i) val tuple1: (String, Array[String]) = myAndFriends(j) //看是不是有共同好友,是不是取交集 val sameFriends: Array[String] = tuple._2.intersect(tuple1._2) println("用户:"+tuple._1+"用户:"+tuple1._1+"的共同好友是:"+sameFriends.mkString(",")) } } } } |