使用io流,读出一本小说里面的所有字符,并记录出每一个字符出现的次数,并打印出字符最多的字符.

public static void main(String[] args) throws IOException {
    //使用缓冲流:使用缓冲流特有的功能:一次可以读一行的特有功能
    BufferedReader bf = new BufferedReader(new FileReader("D:/dpcq.txt"));
    //创建一个map集合,
    Map<Character,Integer> map = new TreeMap<>();
    //创建一个集合,
    ArrayList<String> list = new ArrayList<>();
  
    String line;  
     //读取的每一行不为空,然后添加到集合当中
    while ((line =bf.readLine())!=null){
        list.add(line);
    }
    for (String s : list) {
        //把字符串变成字符数组
        char[] chars = s.toCharArray();
        for (char c : chars) {
            //判断集合中是否存在字符c
            if (map.containsKey(c)){
                //如果存在,根据map的get方法获取键值
                Integer integer = map.get(c);
                //键值+1
                map.put(c,integer+1);
            }else{
                //不存在.将键值存入1
                map.put(c,1);
            }
        }
    }
    //创建两个集合,一个键的集合和另外一个键值的集合
    ArrayList<Integer> list1 = new ArrayList<>();
    ArrayList<Character> list2 = new ArrayList<>();
    //遍历map集合,得到所有的键和相对应的键值
    Set<Map.Entry<Character, Integer>> entries = map.entrySet();
    for (Map.Entry<Character, Integer> entry : map.entrySet()) {
        //得到所有的jian
        Character key = entry.getKey();
        //得到所有的键值
        Integer value = entry.getValue();
        //把所有的键值存入到集合当中
        list1.add(value);
        //把所有的键存入到集合当中
        list2.add(key);
    }
    int max = list1.get(0);
    int index = 0;
    //遍历键值集合,键值里面的最大值,并打印出来键值最大值所对应的索引值;
    for (int i = 1; i < list1.size(); i++) {

        if(list1.get(i)>max){
            max=list1.get(i);
            index =i;
        }
    }
    //打印键值里面的最大值和对应的索引值
    System.out.println("键值里面的最大值对应的索引是 :"+index);
    System.out.println("键值里面的最大值是:"+max);
    //根据键值的索引值去键的集合里面找键
    Character character = list2.get(4016);
    System.out.println("出现最多的字符是:"+character);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值