package com.swift;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry; public class Zhongwen_Shuzi_Times { public static void main(String[] args) {
/*
* 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
*/
String str="琅琊榜fengqichanglin987琅榜623231212314safdbcbde";
char[] arr=str.toCharArray(); Map<Character,Integer> map=new HashMap<Character,Integer>();
int num=0;
for(char c:arr) {
map.put(c, num);
}
for(Entry<Character,Integer> entry:map.entrySet()) {
System.out.println(entry.getKey().toString()+entry.getValue());
}
for(char c:arr) {
if(map.containsKey(c)) {
num=map.get(c);
num++;
map.remove(c);
map.put(c, num);
}
}
for(Entry<Character,Integer> entry:map.entrySet()) {
System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" ");
} } }

按键值的降序排序

package com.swift;

import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap; public class Zhongwen_Shuzi_Times { public static void main(String[] args) {
/*
* 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数,按值的降序排序,如果值相同则按键值的字母顺序
*/
String str="琅琊榜fengqichanglin987琅榜623231212314safdbcbde";
char[] arr=str.toCharArray(); Map<Character,Integer> map=new TreeMap<Character,Integer>(new Comparator<Character>() {//这里只能按键值排序 @Override
public int compare(Character o1, Character o2) {
return o2-o1;//降序
} });
int num=0;
for(char c:arr) {
map.put(c, num);
}
for(Entry<Character,Integer> entry:map.entrySet()) {
System.out.println(entry.getKey().toString()+entry.getValue());
}
for(char c:arr) {
if(map.containsKey(c)) {
num=map.get(c);
num++;
map.remove(c);
map.put(c, num);
}
}
for(Entry<Character,Integer> entry:map.entrySet()) {
System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" ");
} } }

按值的降序排序,如果值相同则按键值的字母顺序

要注意这个问题:

不能把map.entrySet()直接强转成List<Entry<Character,Integer>>

需要用new ArrayList()的构造,即放在参数中

package com.swift;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap; public class Zhongwen_Shuzi_Times { public static void main(String[] args) {
/*
* 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数,按值的降序排序,如果值相同则按键值的字母顺序
*/
String str="琅琊榜fengqichanglin987琅榜623231212314safdbcbde";
char[] arr=str.toCharArray(); Map<Character,Integer> map=new TreeMap<Character,Integer>();
int num=0;
for(char c:arr) {
map.put(c, num);
}
for(char c:arr) {
if(map.containsKey(c)) {
num=map.get(c);
num++;
map.remove(c);
map.put(c, num);
}
}
for(Entry<Character,Integer> entry:map.entrySet()) {
System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" ");
}
List<Entry<Character,Integer>> list=new ArrayList<Entry<Character, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Entry<Character,Integer>>(){ @Override
public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
int num=o2.getValue()-o1.getValue();
return num==0?o1.getKey()-o2.getKey():num;
}
});
System.out.println();
for(Entry<Character,Integer> entry:list) {
System.out.print(entry.getKey().toString()+"-"+entry.getValue()+" ");
}
} }

java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序的更多相关文章

  1. Java算法面试题(史上最强、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  2. 算法面试题:一个List<Student>,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!

    算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点! 解题思路 这是群里某位小伙伴去面试碰到的面试题,从题目本身来看,面试官应该是要考察面试者对泛型 Lis ...

  3. java算法面试题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个, 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。

    package com.swift; import java.util.Scanner; public class Hanzi_jiequ { public static void main(Stri ...

  4. java算法面试题:从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 ;读取docx 读取doc 使用poi 相关jar包提集提供下载

    从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三,28 2,李四,35 3,张三,28 4,王五,35 5,张三,28 6,李四,35 7,赵六,28 ...

  5. java算法面试题:设计一个快速排序。双路快速排序,简单易于理解。

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...

  6. java算法面试题:有数组a[n],用java代码将数组元素顺序颠倒

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...

  7. java算法面试题:排序都有哪几种方法?请列举。用JAVA实现一个快速排序。选择冒泡快速集合至少4种方法排序

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...

  8. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg

    package com.swift; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; i ...

  9. java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

随机推荐

  1. ldap第二天-yum安装LDAP + phpLDAPadmin

    1.安装LDAP服务器和客户端,migrationtools工具包 yum install -y openldap-servers openldap-clients migrationtools 2. ...

  2. Java基础笔记(七)—— 成员变量、静态变量、局部变量

    public class Test { int c; //成员变量(实例变量) static int s1; //静态变量(类变量)(全局变量) public static void main(Str ...

  3. 设计模式——抽象工厂(Abstract Factory)

    提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类. ——DP UML类图 模式说明 抽象工厂与工厂方法在定义上最明显的区别是“创建一系列相关或相互依赖对象的接口”,由此可以看出抽象工 ...

  4. Microsoft JDBC Driver 使用 getParameterMetaData 会报错?

    不知道为何使用 Microsoft JDBC Driver for SQL Server 驱动时,sql语句不带参数没有问题,但是如果带参数且使用 getParameterMetaData 就会提示某 ...

  5. FZU Problem 2244 Daxia want to buy house

    模拟题,注意: 1.那两个贷款都是向银行贷的,就是两个贷款的总额不能超过70%,就算公积金贷款能贷也不行,我开始的时候以为公积金贷款是向公司借的,,欺负我这些小白嘛.... 2.最坑的地方 *0.7是 ...

  6. C#对象和集合初始值设定项

    对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属性分配值,而无需调用后跟赋值语句行的构造函数. 利用对象初始值设定项语法,你可为构造函数指定参数或忽略参数(以及括号 ...

  7. 30分钟学会React Hook, Memo, Lazy

    我们来学习React 16.8里的新特性. 1. 自行配置好React的环境,推荐你使用Create React APP, 你也可以下载本文档Zip解压到本地直接运行. https://github. ...

  8. 16.Ubuntu LTS 16.04安装搜狗输入法全过程记录(纯新手)

    这是我第四次打算转到Ubuntu上了,应该不会像以前那样装个系统就拜拜了.打算先把C和Vim重新学起来,数据结构那本书看完写完,第二步是学python和算法导论,暂定如此. 昨天晚上系统装完以后想着要 ...

  9. 在Ubuntu中安装MySQL

    在Ubuntu中安装MySQL Ubuntu实用工具系列文章,将介绍基于Linux ubuntu的各种工具软件的配置和使用.有些工具大家早已耳熟能详,有些工具经常用到但确依然陌生.我将记录我在使用操作 ...

  10. 从零开始的全栈工程师——js篇2.14(表单与计时器)

    一.表单 Form input select textarea type=”radio/checkbox/password/button/text/submit/reset/” 表单的事件 oncha ...