Java基础操作面试题:Map集合排序 需要TreeMap 构造方法参数有比较器 输入字符串,统计A、B、C、D、出现次数,由高到低输出字母和出现次数,使用Map集合完成此题
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());
}
} }
Java基础操作面试题:Map集合排序 需要TreeMap 构造方法参数有比较器 输入字符串,统计A、B、C、D、出现次数,由高到低输出字母和出现次数,使用Map集合完成此题的更多相关文章
- Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台
1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台: 分析: A: 定义学生类 B: 创建一个TreeSet集合 C: 总分从高到底如何实现 ...
- Java基础语法面试题50题整理(带答案)
嗯,之前某些原因整理了这份面试题,加油生活 (: 0,嗯,先做简单的,那个不对() 1,int [] sy = {0,9,2,3}; 2,int [] sy1 = new int[4]; 3,in ...
- 40道Java基础常见面试题及详细答案
最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案. 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可. 八种基 ...
- Java基础常见笔试题总结
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件 2.“sta ...
- 80道最新java基础部分面试题(六)
自己整理的面试题,希望可以帮到大家,需要更多资料的可以私信我哦,大家一起学习进步! 59.ArrayList和Vector的区别 答: 这两个类都实现了List接口(List接口继承了Collecti ...
- java基础常见面试题,这是一篇超长的随笔!!!
1. Java基础部分....................................................... 4 1.一个".java"源文件中是否可以包括 ...
- 【面试题】Java基础部分面试题
Java基础面试题 Equals与==的区别 使用==比较原生类型如:boolean,,int,char等等, 使用equals()比较对象. 1. ==是判断两个变量或类型是不是指向同一个内存空 ...
- 2019年最新50道java基础部分面试题
[软帝学院]1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".j ...
- Java基础知识强化52:经典排序之冒泡排序(BubbleSort)
1. 冒泡排序的原理图: 2. 冒泡排序代码实现: package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 ...
随机推荐
- 【工具篇】Sublime Text 2/3 安装汉化破解、插件包安装教程详解
Sublime Text概述: Sublime Text是一个代码编辑器,也是HTML和散文先进的文本编辑器. 漂亮的用户界面和非凡的功能,例如:迷你地图,多选择,Python插件,代码段等等. 完全 ...
- 关于fiddler抓取HTTPS请求443的问题
1.环境:fiddler4.IOS10.3以上 2.需求:使用fiddler抓取IOS上的https请求 3.解决方案 步骤一:设置fiddler 步骤二:手机端安装证书 手机设置代理,打开手机浏览器 ...
- linux 查看系统版本号(转)
一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@localhost ~]# cat /proc/versionLinux version 2.6.18 ...
- 3分钟简单了解 prototype 和 __proto__
关于prototype 1. 所有的函数都会有一个prototype属性,属性值是一个普通对象: 2. 当我们去new一个构造函数的实例时,构造函数的原型对象(prototype)会被赋值给它实例的[ ...
- Invalid YGDirection 'vertical'. should be one of: ( inherit, ltr, rtl )
react native 路由( react-native-router-flux )跳转页面一直都报错 本项目解决方法:不是路由的问题,是跳转的页面有有问题,删除下图标记的红色即可(解决方法是排除法 ...
- css Masks
css Masks:添加蒙板: 测试在微信端可以支持了.谷歌浏览器支持.safari应该也是支持的. 效果:http://runjs.cn/code/xrrgmgmk 但是谷歌可以支持这样子的:htt ...
- 2.排序检索数据 ---SQL
order by 一.排序数据 SELECT prod_name FROM Products ORDER BY prod_name; ORDER BY子句的位置 在指定一条ORDER BY子句时,应该 ...
- Linux —— gcc编译文件
编译过程 预处理: 作用: 负责展开在源文件重定义的宏 操作: g++ -E 源文件.c -o 目标文件.i 汇编: 作用: 将目标文件生成汇编代码文件 操作: g++ -S 目标文件.i -o 汇编 ...
- 熔断降级(Polly)
熔断降级(Polly) https://www.cnblogs.com/qhbm/p/9224307.html 一. 什么是熔断降级 熔断就是"保险丝".当出现某些状况时,切断服务 ...
- NET Core应用可以同时运行在Windows Container和Linux Container-1
NET Core多平台开发体验[1]: Windows 微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后 ...