概述
样例输入:aabbAAcccCCC11
样例输出:c:3 C:3 a:2 A:2 1:2 b:2 (这里当出现次数一致时,c与C的先后顺序随意)
要求出现次数多的字符与其出现次数先进行输出
思路:看到要用到字符和它出现的次数,我就想到用使用HashMap实现
key为字符,value为该字符出现的次数
最后按照字符出现次数进行排序
问题:最初想的是利用Collections.sort()对HashMap中的内容进行排序,结果发现不可以。
方法声明如下图,只能对实现了List接口的类进行排序
实现List接口的有哪些类
HashMap的信息
最后将HashMap中的内容放入了ArrayList中,再进行排序的(也可以放到数组中,再进行排序,当然ArrayList本身就是动态数组)
//对HashMap进行了填充之后
Set<Map.Entry<Character, Integer>> entrySet = map.entrySet();
ArrayList<Map.Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character, Integer>>(entrySet);
整体代码如下:
import java.util.*;
import java.util.Map.Entry;
public class Class2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
sc.close();
char[] chs = str.toCharArray();
Class2 c = new Class2();
c.compute(chs);
}
private void compute(char[] chs) {
if(chs==null)
return;
int len = chs.length;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
//填充map
for(int i = 0; i<len; i++) {
Integer num = map.get(chs[i]);
if(num == null) {
map.put(chs[i], 1);
}else {
map.put(chs[i], num+1);
}
}
Set<Map.Entry<Character, Integer>> entrySet = map.entrySet();
// Iterator<Entry<Character, Integer>> bianli = entrySet.iterator();
// while(bianli.hasNext()) {
// Entry<Character, Integer> item = bianli.next();
// System.out.println(item.getKey()+":"+item.getValue());
// }
//将HashMap的内容放到ArrayList中,再进行排序
ArrayList<Map.Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character, Integer>>(entrySet);
Collections.sort(list, new Comparator<HashMap.Entry<Character, Integer>>() {
@Override
public int compare(Entry<Character, Integer> item1, Entry<Character, Integer> item2) {
// TODO Auto-generated method stub
if(item1.getValue()<item2.getValue()) {
return 1;
}else if(item1.getValue()==item2.getValue()){
return 0;
}
else {
return -1;
}
}
});
int size = list.size();
for(int i = 0; i<size; i++) {
Entry<Character, Integer> item = list.get(i);
System.out.println(item.getKey()+":"+item.getValue());
}
}
}
样例输入和输出:
最后
以上就是狂野溪流为你收集整理的练习题---将字符串中字符及其出现的次数输出,按出现次数降序输出---用Java实现的全部内容,希望文章能够帮你解决练习题---将字符串中字符及其出现的次数输出,按出现次数降序输出---用Java实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复