按鍵值的降序排序 按值的降序排序,如果值相同則按鍵值的字母順序 要註意這個問題: 不能把map.entrySet()直接強轉成List<Entry<Character,Integer>> 需要用new ArrayList()的構造,即放在參數中 ...
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()+" "); } } }