人际
1.人际关系文件 好友.txt
A:B,C,D,F,E,O,j
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
X:A
2.获取人员最好的用户
/**
* 1.1 获取所有用户的对应的好友数量 取人员最好的用户
* @author hasee
*
*/
public class Test1 {
@SuppressWarnings("resource")
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//1 读取文件
BufferedReader reader = new BufferedReader(new FileReader("d:/data/好友.txt"));
//定义map 存储结果数据
Map<String,integer> result = new HashMap();
//定义一个字符串 接收每行数据
String str ;
while((str = reader.readLine())!=null) {
//3 对每行数据进行切割
//3.1 按照冒号切割 spliy[0]用户名 split[1] 好友列表
String[] split = str.split(":");
//3.2切分好友列表数据
String[] fs = split[1].split(",");
//将数据保持到map
result.put(split[0], fs.length);
}
//遍历map
Set<Entry<String,Integer>> set = result.entrySet();
for (Entry<String, Integer> entry : set) {
//System.out.println(entry.getKey()+":"+entry.getValue());
}
System.out.println("-------------------------");
//将map保存到list中
ArrayList<Entry<String,Integer>> list = new ArrayList(set);
for (Entry<String, Integer> entry : list) {
System.out.println(entry.getKey()+":"+entry.getValue());
}
//使用list.sort重写 进行排序
list.sort(new Comparator<Entry<String,Integer>>() {
@Override
public int compare(Entry<String,Integer> o1, Entry<String,Integer> o2) {
// TODO Auto-generated method stub
return o2.getValue()-o1.getValue();
}
});
System.out.println("************************");
//遍历list
System.out.println("输出排序后的列表");
for (Entry<String, Integer> entry : list) {
System.out.println(entry.getKey()+":"+entry.getValue());
}
System.out.println("输出好友数最高的前3个人");
for(int i = 0;i<3;i++) {
System.out.println(list.get(i).getKey());
}
}
}
3.求任意两人的共同好友
public class test3 {
static Map<String,List<String>> map;
static {
try {
map = getFsInfo();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printstacktrace();
}
}
public static void main(String[] args) {
//求任意两个人的共同好友
Set<String> key = map.keySet(); //获得所有key
ArrayList<String> list = new ArrayList<>(key); //将key保存到list中
for(int i = 0;i <list.size()-1; i++) { //注意i<list.size()-1
String name1 = list.get(i); //获得第一个的key value
List<String> f1 = map.get(name1);
for(int j = i+1; j<list.size();j++) {
String name2 = list.get(j);
ArrayList<String> f = new ArrayList<>(f1); //重新复制第一个的value 防止被改变
List<String> f2 = map.get(name2);
f.retainAll(f2); //求他俩的交集
if(f.size()>0) {
System.out.println(name1+"和"+name2+"的共同好友是:"+f);
}
}
}
}
public static Map<String,List<String>> getFsInfo() throws Exception{
BufferedReader r = new BufferedReader(new FileReader("d:/data/好友.txt"));
String line;
Map<String,List<String>> map = new HashMap<>(); //创建map保持数据
while((line = r.readLine())!=null) { //开始读取数据
String[] split = line.split(":");
String name = split[0];
String[] split2 = split[1].split(",");
List<String> list = Arrays.asList(split2); //这样的集合长度是固定的
ArrayList<String> list1 = new ArrayList<>(list); //重新创建集合,长度可变
map.put(name, list1);
}
r.close();
return map;
}
}
文章最后发布于: 2018-06-22 20:26:35
相关阅读
JavaScript返回上一页和刷新当前页 window.history.go(-1); //返回上一页 window.history.back(); //返回上一页 //如果要强行
一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任
java.sql.ResultSetMetaData 接口的使用(结果集元数据
intro 有时需要了解结果集的元数据信息(之后与反射,泛型结合,编写通用方法,减少代码重复):columnCount 结果集的列数columnName 列
工具类如下:import java.security.MessageDigest; /** * @Author:Starry * @Description: * @Date:Created in 9:46 2018/4/13
前言: 输入数字金额参数,运行程序得到其对应的大写中文金额;例如:输入— 12.56,输出— 12.56:壹拾贰元伍角陆分;重点来了