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()); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具