Java基础操作面试题:Map集合排序 需要TreeMap …
2018-06-18 03:50:51来源:未知 阅读 ()
Map和Collections是同级别的,不能像List排序那样直接用Collections.sort(new Comparator<?>(){ 复写compara方法});
HashMap没有排序
TreeMap默认排序为升序,注意是按键值key排序
package com.swift; import java.util.Comparator; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; public class Scanner_String_ABCD_Times_jiangxu { public static void main(String[] args) { /* * 输入字符串,统计A、B、C、D、出现次数,由高到低输出字母和出现次数 */ Scanner scan=new Scanner(System.in); System.out.println("请输入一个字符串,用于统计A、B、C、D出现次数:"); String str=scan.nextLine(); //降序 Map<Character,Integer> map=new TreeMap<Character,Integer>(new Comparator<Character>() { @Override public int compare(Character arg0, Character arg1) { return arg1.compareTo(arg0); } }); map.put('A', 0); map.put('B', 0); map.put('C', 0); map.put('D', 0); map.put('a', 0); map.put('b', 0); map.put('c', 0); map.put('d', 0); char[] arr=str.toCharArray(); for(char c:arr) { if(map.containsKey(c)) { Integer i=map.get(c); i++; map.remove(c); map.put(c, i); } } for(Map.Entry<Character, Integer> entry:map.entrySet()) { System.out.println(entry.getKey()+"~~"+entry.getValue()); } for(Map.Entry<Character, Integer> entry:map.entrySet()) { System.out.println(entry.getKey()+"~~"+entry.getValue()); } } }
根据TreeMap的value来进行排序。对value排序还是需要借助于Collections的sort(List<T> list, Comparator<? super T> )
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; public class Scanner_String_ABCD_Times_jiangxu { public static void main(String[] args) { /* * 输入字符串,统计A、B、C、D、出现次数,由高到低输出字母和出现次数 */ Scanner scan=new Scanner(System.in); System.out.println("请输入一个字符串,用于统计A、B、C、D出现次数:"); String str=scan.nextLine(); Map<Character,Integer> map=new TreeMap<Character,Integer>(); map.put('A', 0); map.put('B', 0); map.put('C', 0); map.put('D', 0); map.put('a', 0); map.put('b', 0); map.put('c', 0); map.put('d', 0); char[] arr=str.toCharArray(); for(char c:arr) { if(map.containsKey(c)) { Integer i=map.get(c); i++; map.remove(c); map.put(c, i); } } //遍历 for(Map.Entry<Character, Integer> entry:map.entrySet()) { System.out.println(entry.getKey()+"~~"+entry.getValue()); } //把map.entrySet转换为list 用Collections.sort(list,new Comparator<>(){});排序 降序 List<Map.Entry<Character,Integer>> list=new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());//不能把map.entrySet() cast to(强转) list,需要构造 Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>(){ @Override public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) { int i=o2.getValue()-o1.getValue(); return i; } }); //不要再遍历map,而要遍历已排序的list for(Map.Entry<Character, Integer> entry:list) { System.out.println(entry.getKey()+"~~"+entry.getValue()); } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash