统计字符串中字符个数,通过HashMap和TreeMap分别按value和key排序
2014-09-29 19:22
387 查看
package test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; /** * 统计字符串中个字符的个数,并通过hashmap按value和key分别排序 * @author USER * */ public class Test1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); String string = in.nextLine(); findsub(string); } private static void findsub(String string) { // TODO Auto-generated method stub HashMap<String, Integer> map = new LinkedHashMap<String, Integer>(); char[] ch = string.toCharArray(); for (int i = 0; i < ch.length; i++) { Integer count = map.get(ch[i]+""); if (count == null) { count = 1; }else { count = count +1; } map.put(ch[i]+"", count); } for (String str : map.keySet()) { System.out.println(str+":"+map.get(str)); } System.out.println(); //按value排序,通过修改Collections.sort()方法来实现 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(); list.addAll(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { // TODO Auto-generated method stub return o2.getValue() - o1.getValue(); //return o1.getKey().toString().compareTo(o2.getKey().toString()); } }); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i).getKey()+":"+list.get(i).getValue()); } System.out.println(); //按key值排序 //方法 一:通过修改Collections.sort()方法来实现 Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { // TODO Auto-generated method stub return o1.getKey().toString().compareTo(o2.getKey().toString());//升序 //return o2.getKey().toString().compareTo(o1.getKey().toString());//降序 } }); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i).getKey()+":"+list.get(i).getValue()); } System.out.println(); //方法二:通过key转换为数组 Object[] obj = map.keySet().toArray(); Arrays.sort(obj); for (Object object : obj) { System.out.println(object+":"+map.get(object)); } } }
package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; import java.util.Map.Entry; /** * 统计字符串中个字符的个数,并通过Treemap按value排序 * 由于TreeMap默认就是按照key的升序排列 * @author USER * */ public class Test2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); String string = in.nextLine(); findsub(string); } private static void findsub(String string) { // TODO Auto-generated method stub TreeMap<String, Integer> map = new TreeMap<String, Integer>(); char[] ch = string.toCharArray(); for (int i = 0; i < ch.length; i++) { Integer count = map.get(ch[i]+""); if (count == null) { count = 1; }else { count = count +1; } map.put(ch[i]+"", count); } for (String str : map.keySet()) { System.out.println(str+":"+map.get(str)); } System.out.println(); //按value排序 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(); list.addAll(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { // TODO Auto-generated method stub return o2.getValue() - o1.getValue(); //return o1.getKey().toString().compareTo(o2.getKey().toString()); } }); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i).getKey()+":"+list.get(i).getValue()); } } }
相关文章推荐
- 从终端获取一个字符串,分别统计其中大写字母、小写字母、数字及其它字符的个数。
- 输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符
- 统计一个字符串中出现次数最多的字符(HashMap)
- 统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
- 输入一行字符串分别统计出字母。数字。空格和其他字符 *利用while循环语句条件输入的字符为"\n"
- JS编写一个函数,实现传入一个不定长度字符串,查找出重复次数前n名的字符并分别统计其次数
- java循环练习:输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符
- 编写一个函数,分别统计出传入字符串参数(可能不止一个参数)的英文字母,空格,数字和其他字符的个数
- java实验2.(4)(5)HashMap,TreeMap统计字符频率
- 分别统计出字符串中的英文字母等字符的个数
- hashmap统计字符串中每个字符出现的次数
- 从终端获取一个字符串,分别统计当中大写字母、小写字母、数字及其他字符的个数。
- HashMap练习统计字符串中每个字符出现的次数和HashMap嵌套HashMap
- 分别统计字符串内所有字符的个数
- JavaSE8基础 TreeMap 统计输入的字符串中 各个字符出现的次数
- java中TreeMap的用法-统计字符串中每个字符出现的次数
- 通过程序统计字符串的大写字母个数、小写字母个数、数字个数和其它字符个数。用函数func实现功能
- 输入一个字符串,分别统计出包含的英文字母、数字、空格和其他字符的个数
- 通过hashmap实现统计字符串数组中某个字符串出现的次数的方法
- 分别统计字符串中各字符个数