必威体育Betway必威体育官网
当前位置:首页 > IT技术

Java学习day16---人际关系

时间:2019-10-25 04:42:14来源:IT技术作者:seo实验室小编阅读:59次「手机版」
 

人际

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返回上一页的几种方法及区别介绍

JavaScript返回上一页和刷新当前页 window.history.go(-1); //返回上一页 window.history.back(); //返回上一页 //如果要强行

Java反射介绍

一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任

java.sql.ResultSetMetaData 接口的使用(结果集元数据

intro 有时需要了解结果集的元数据信息(之后与反射,泛型结合,编写通用方法,减少代码重复):columnCount 结果集的列数columnName 列

JAVA中MD5加密(MD5工具类)

工具类如下:import java.security.MessageDigest; /** * @Author:Starry * @Description: * @Date:Created in 9:46 2018/4/13

Java实现 “ 将数字金额转为大写中文金额 ”

前言:        输入数字金额参数,运行程序得到其对应的大写中文金额;例如:输入— 12.56,输出— 12.56:壹拾贰元伍角陆分;重点来了

分享到:

栏目导航

推荐阅读

热门阅读