1 数据

冒号左边为用户id,冒号右边为用户的好友列表

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

2 需求

求出有共同好友的用户对,及他们的共同好友,如:

A与B,有共同好友C,E

A与C,有共同好友D

.......

3 步骤分析

假如社交数据存储在本地的文件中

1 读取数据信息2 对获取的每行数据处理,按照“:”号切分,左侧为用户id,右侧是当前用户对应的好友列表(再按照“,”号切分好友列表)3 将用户和器对应的好友列表存放在map这种集合类型中,(用户id作为key,其对应的好友列表作为value【list】) 4 求出任意两个用户的共同好友的交集,求list的交集

4 使用到的技术点

IO读取文件信息,字符串切割,List和map集合存储数据和常用方法

5 代码实现

一 读取文件数据获取用户和器对应的好友列表 Map>

publicstaticMap> getUserInfo() {

Map>map=newHashMap<>();

try(BufferedReaderbr=newBufferedReader(newFileReader("d:/data/好友.txt"));//可自动释放资源){

Stringline=null;

while((line=br.readLine()) !=null) {

// 切割数据 获取每个用户对应的列表

String[]split=line.split(":");

if(split.length>= 2) {

Stringstr=split[0];// 用户

Stringstr2=split[1];

String[]fs=str2.split(",");

Listlist= Arrays.asList(fs);//注意Arrays.asList(fs)转换的这种集合的长度是固定的不可修改

map.put(str,list);

}

}

}catch(Exceptione) {

//TODOAuto-generated catch block

e.printStackTrace();

}

returnmap;

}

}

二 获取任意两个人的共同好友

为了实现获取任意两个人的共同好友,所以要对map的key,即所有的用户进行遍历操作,可以将用户的uid再放在list中 ,方便遍历和比较

publicstaticvoidmain(String[]args)throwsException {

//将共同好友数据写到指定的文件中

BufferedWriterwriter=newBufferedWriter(newFileWriter("d:/data/same.txt"));

Map>info=getUserInfo();

//存储所有的用户信息

Listus=newArrayList<>();

Setuids=info.keySet();

for(Stringuid:uids) {

us.add(uid);

}

Listfs1=null;

Listfs2=null;

for(inti= 0;i

Stringuid1=us.get(i);//前面的一个好友

Listf=info.get(uid1);//前面一个人的好友

for(intj=i+ 1;j

Stringuid2=us.get(j);//后面的一个人

Listff=info.get(uid2);//后面那个人的好友

fs1=newArrayList<>(f);

fs2=newArrayList<>(ff);

fs1.retainAll(fs2);

if(fs1!=null&&fs1.size() > 0) {

writer.write(uid1+"和"+uid2+"的共同好友:"+fs1+"\n");

System.out.println(uid1+"和"+uid2+"的共同好友:"+fs1);

writer.flush();

}

}

}

}

思考

1 获取制定两个用户的共同好友(假如用户数量非常多,加载数据需要很长时间,怎么优化?)

2 获取好友数最多的前N个用户

如有疑问请咨询 qq : 598196583

更多内容请咨询qq:598196583    附带视频资料

共同好友推荐java_社交数据分析--共同好友分析(java版)相关推荐

  1. 大数据workshop:《云数据·大计算:海量日志数据分析与应用》之《社交数据分析:好友推荐》篇...

    大数据workshop:<云数据·大计算:海量日志数据分析与应用>之<社交数据分析:好友推荐>篇 实验背景介绍 了解更多2017云栖大会·成都峰会 TechInsight &a ...

  2. 共同好友推荐java_【开班典礼】初雪迎初见,白色浪漫中,他们选择从此与Java相伴!...

    昨晚,当朋友圈满屏都在下着雪的时候,我知道,帝都的初雪来了~ 有人说,初雪最大的善意莫过于下在了周末前夕,谁说不是呢?! 可是对于这一批人来说,初雪还多了层意义. 当开班邂逅了初雪,这是多么奇妙的相遇 ...

  3. 共同好友推荐java_一种社交网络下的好友推荐算法

    A New Link Prediction Algorithm Based on Social Network ZHANG Mengzhe 1 张萌哲 女 硕士研究生,主要研究方向:社交网络和个性化推 ...

  4. 《程序员》7月刊推荐:社交网数据库技术分析

    http://www.programmer.com.cn/3711/ 传统互联网正在迈向一个全新的时代-- 社交服务网( Social Networking Service )时代,从 " ...

  5. 我的世界电脑版怎么下载java_我的世界端游java版怎么下载

    如何在"我的世界"中安装jav 转到Internet查找jre7. 下载软件安装包后,将其安装在手机中. 手机的QQ通讯录不是很容易使用. 安装后,它将涵盖您手机的原始通讯录软件. ...

  6. 微信统一下单 java_微信支付之统一下单--JAVA版

    都说微信支付有些坑,都抱怨微信支付的文档太烂,一会APPId,一会商户id,还有appsecret,支付API秘钥让你傻傻分不清楚,还有这里大写那里小写,几种标准,让你眼花缭乱.没错,这就是很多技术团 ...

  7. 退款java_微信支付-退款操作(JAVA版)

    本demo基于微信扫码支付退款(扫码支付暂时没放出demo下次有时间补上) 由于只是demo很多东西没有进行封装 需注意这两个参数我使用的是out_trade_no image.png 请求XML示例 ...

  8. 斯坦福句法分析 java_斯坦福句法分析使用方法(java版)

    首先说一下句子相似度分析的主要思想.句法分析和义元分析是两个大方向,如果学过编译原理的大概能明白其中的关系.我做的方向就是句法分析这个方向的. 斯坦福句法分析器绝对不是最好用的中文句法分析器,它的主要 ...

  9. java 好友推荐 算法_基于jsp的好友推荐-JavaEE实现好友推荐 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的好友推荐, 该项目可用各类java课程设计大作业中, 好友推荐的系统架构分为前后台两部分, 最终实现在线上进行好友 ...

最新文章

  1. 【VMC实验室】在QCloud上创建您的SQL Cluster(1)
  2. vscode snippet利器
  3. NeHe教程Qt实现——lesson16
  4. android view 源码分析,Android ViewPager源码详细分析
  5. c语言return 11,二级C语言教程章节测试11.对函数的进一步讨论
  6. json可视化编辑器_推荐一个基于 Vue 的前端界面可视化设计器项目
  7. MFC程序崩溃的友好处理
  8. 交叉编译HTOP并移植到ARM嵌入式Linux系统
  9. MarkDown编辑器语法指南——SegmentFault
  10. 【读书笔记】JavaScript高级编程(一)
  11. Servlet四种访问属性--知识点
  12. 牛x!一个比传统数据库快 100-1000 倍的数据库!
  13. 知道创宇获CNNVD年度优秀技术支撑单位及漏洞预警报送专项奖
  14. 金融市场:最全的外汇平台资料大全(包括开户金额、点差、特色!)
  15. Python爬虫技术-根据【理财】关键字爬取“巨潮资讯网”的title
  16. 抑郁症自测量表测试软件,科学网-抑郁症自测量表(SDS)-李侠的博文
  17. 那些年,和女孩们同居的日子
  18. Word文档丢失找回之没有保存Word文档就关闭了怎么解决
  19. 避雷:六种职场着装可能导致你面试失败
  20. linux下反向解析文件的权限应该是什么,Linux 下的DNS服务器中,反向解析文件的内容包括( )...

热门文章

  1. 二叉树后序遍历的非递归算法
  2. 最大流算法之三:ISAP
  3. 工作票不宜使用计算机管理,什么情况下使用动火工作票
  4. 移动电源是什么?有哪些类型?
  5. Android适配 - 跳转应用商店查看应用详情
  6. Python?Python!(python是解释型还是编译型)
  7. 【一起来烧脑】一步学会HTML体系
  8. 【PB】安装PB9.0问题
  9. 感冒后用了八种药 长沙女子出现肝损害
  10. 老司机管理系统(Julia Ann)