java笔试题(六)

复制代码
import java.util.*;
import java.util.stream.Stream;

public class Javatest89 {
    /**
     * 集合-Map(HashMap)、Collections工具类
     * 练习3:统计一个字符串中每个字符出现的次数,保存到HashMap集合中,
     * 通过排序,打印输出次数最多的前三个字符及次数
     * 
     * 运行结果:
     * 请输入一个字符串:
     * abbcccdddd
     * **********方法一***********
     * d=4
     * c=3
     * b=2
     * **********方法二***********
     * a=1
     * b=2
     * c=3
     * d=4
     * **********方法三***********
     * d=4
     * c=3
     * b=2
     * **********方法四***********
     * b出现次数:2
     * c出现次数:3
     * d出现次数:4
     */
    public static void main(String[] args) {
        System.out.println("请输入一个字符串:");
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        HashMap<Character,Integer> map = new HashMap<>();
        //1、遍历字符串,统计每个字符出现的次数,并保存至map集合
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(map.containsKey(c)){
                map.put(c,map.get(c)+1);
            }
            else{
                map.put(c,1);
            }
        }
        //2、根据出现次数多少进行排序
        //第一种方法,List的sort方法
        //2.1 转换成List
        List<Map.Entry<Character,Integer>> entry = new ArrayList<>(map.entrySet());
        //2.2 根据value进行排序
        entry.sort(Map.Entry.comparingByValue());
        System.out.println("**********方法一***********");
        for (int i = entry.size() -1 ; i > entry.size() -4; i--) {
            System.out.println(entry.get(i));
        }
        //第二种方法,sorted方法
        Stream<Map.Entry<Character,Integer>> sorted
                = map.entrySet().stream().sorted(Map.Entry.comparingByValue());
        System.out.println("**********方法二***********");
        sorted.forEach(System.out::println);
        //第三种方法,Comparator的sort方法
        List<Map.Entry<Character,Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
            @Override
            public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        });
        System.out.println("**********方法三***********");
        for (int i = list.size() -1; i > list.size() -4 ; i--) {
            System.out.println(list.get(i));
        }
        //第四种方法,自定义方法
        List<Integer> list1 = new ArrayList<>();
        for (Integer value:map.values()) {
            list1.add(value);
        }
        System.out.println("**********方法四***********");
        list1.sort(Integer::compareTo);
        for (Map.Entry<Character,Integer> entry1:map.entrySet()) {
            if(entry1.getValue() == list1.get(list1.size() -1) ||
                    entry1.getValue() == list1.get(list1.size() -2) ||
                    entry1.getValue() == list1.get(list1.size() -3)){
                System.out.println(entry1.getKey() + "出现次数:" + entry1.getValue());
            }
        }
    }
}
复制代码

 

posted @   翼小白  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示