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. hdu1394(枚举/树状数组/线段树单点更新&区间求和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给出一个循环数组,求其逆序对最少为多少: 思路:对于逆序对: 交换两个相邻数,逆序数 +1 ...

  2. AGC001 D - Arrays and Palindrome【构造】

    把回文串的相等关系连一下,发现最后要求的是一笔画问题 注意到奇数长度的中间有一个单独没有连线的,所以a数组至多有两个奇数值 如果没有奇数,那么b在最前面放一个1,然后把a[1]~a[m-1]放上去,这 ...

  3. 2014-11-1 NOIP模拟赛1

    冲刺NOIP2014复赛模拟题第六套第二试   题目名称 日历游戏 最大公约数 密码 英文代号 calendar gcd pasuwado 输入文件名 calendar.in gcd.in pasuw ...

  4. 数组常用API(1)

    数组常用API: 1. push 作用:数组尾部添加: 特点:可以添加一个或多个值: 返回值是数组最新的长度:会改变原数组: 示例: var arr = [10,20,30,40];          ...

  5. Spark 学习(二)

    继续学习spark 认真查看了一下${SPARK_HOME}/bin/pyspark 的脚本,原来开启spark 的python 交互挺简单的. 主要操作 export PYTHONPATH=${SP ...

  6. Centos7中给gitLab汉化

    第一步:安装git 下载补西,东西在清华大学开源中心 yum install –y git 第二步:下载 git clone https://gitlab.com/xhang/gitlab.git 第 ...

  7. 爬虫基础(1):urllib库

    urllib库 urllib库是python中的一个基本网络请求库.用于模拟浏览器的行为,向指定服务器发送请求,并接收返回的数据. 在python3中所有的网络请求相关函数都集中在urllib.req ...

  8. c#之quartz任务调度的使用

    这里讲下,quartz这种任务调度程序的简单使用 这是使用的quartz的3.x 版本 2.x 版本与此稍有区别,可以在网上查看2.x版本教程 使用语言为c# quartz的使用分为几个步骤 创建一个 ...

  9. PAT甲级——1110 Complete Binary Tree (完全二叉树)

    此文章同步发布在CSDN上:https://blog.csdn.net/weixin_44385565/article/details/90317830   1110 Complete Binary ...

  10. 2017ACM/ICPC广西邀请赛 CS Course

    题意:删除指定数字,求剩下数字的与或非值 解法:保存一下前缀和后缀 #include <iostream> #include <stdio.h> #include <ve ...