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集合完成此题的更多相关文章

  1. Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台

    1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台: 分析: A: 定义学生类    B: 创建一个TreeSet集合       C: 总分从高到底如何实现 ...

  2. Java基础语法面试题50题整理(带答案)

    嗯,之前某些原因整理了这份面试题,加油生活 (:   0,嗯,先做简单的,那个不对() 1,int [] sy = {0,9,2,3}; 2,int [] sy1 = new int[4]; 3,in ...

  3. 40道Java基础常见面试题及详细答案

    最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案. 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可. 八种基 ...

  4. Java基础常见笔试题总结

    1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件 2.“sta ...

  5. 80道最新java基础部分面试题(六)

    自己整理的面试题,希望可以帮到大家,需要更多资料的可以私信我哦,大家一起学习进步! 59.ArrayList和Vector的区别 答: 这两个类都实现了List接口(List接口继承了Collecti ...

  6. java基础常见面试题,这是一篇超长的随笔!!!

    1. Java基础部分....................................................... 4 1.一个".java"源文件中是否可以包括 ...

  7. 【面试题】Java基础部分面试题

    Java基础面试题 Equals与==的区别 使用==比较原生类型如:boolean,,int,char等等,  使用equals()比较对象. 1.  ==是判断两个变量或类型是不是指向同一个内存空 ...

  8. 2019年最新50道java基础部分面试题

    [软帝学院]1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".j ...

  9. Java基础知识强化52:经典排序之冒泡排序(BubbleSort)

    1. 冒泡排序的原理图: 2. 冒泡排序代码实现: package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 ...

随机推荐

  1. 洛谷P1070 道路游戏

    P1070 道路游戏 题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将 ...

  2. 阿里云ECS测试服务器部署

    前序:为了提供一个干净的测试环境,更好地验证产品问题,也为了防止被开发人员频繁发布代码而打断测试工作,故测试团队搭建了一台阿里云ECS服务器,以下是具体的部署信息: 1. 安装JDK Java版本:J ...

  3. vue路由的四种传值

    第一种:props 配置: 组件内定义: props: ['id'] 路由映射配置,开启props:true : { path: '/user/:id', component: User, props ...

  4. 封装了一个电商放大镜移入放大的功能,适用于VUE

    代码地址:https://github.com/zhongqiulan/jqimgzoom 由于vue只支持ie9以上版本,所以这个插件也是一样的 效果图: 第一步,在goodsinfo文件中引入cs ...

  5. 常用的js工具函数

    JS选取DOM元素的方法注意:原生JS选取DOM元素比使用jQuery类库选取要快很多1.通过ID选取元素document.getElementById('myid');2.通过CLASS选取元素do ...

  6. Django之ORM跨表操作

    Django之ORM表查询及添加记录 一.创建表 - 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-man ...

  7. 【bzoj1503】[NOI2004]郁闷的出纳员

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 13890  Solved: 5086[Submit][Stat ...

  8. Codeforces Round #561 (Div. 2) C. A Tale of Two Lands

    链接:https://codeforces.com/contest/1166/problem/C 题意: The legend of the foundation of Vectorland talk ...

  9. Codeforces 1168A(二分check)

    关键是check.要注意到其实有了mid以后每个位置都是独立的,它能从哪走到哪是固定了的,只要从左到右尽量贪心压着最小值即可. #include <cstdio> const int ma ...

  10. css文本换行的问题

    今天敲代码的时候发现了一个一直都没太注意的小问题,当我在一个200px的div中写了一长串的‘f ‘时发现没有换行 但加上空格或标点符号后就能自动换行 原来浏览器把它当成了一串完整的单词,所以默认不换 ...