隨機輸入一個字符串,計算出字符串中每個字符的數量,並按照字符數量從大到小輸出字符和對應的數量。


舉例:比如,輸入  kkddpppp00j09933
輸出:
p:4
0:3
k:2
d:2
3:2
j:1
思路:1.使用map集合保存每個字符出現的數量,后續需要根據出現的數量進行降序排列(排序)
   2.集合排序:對list集合排序   Collections.sort(list,Comparator)
3.將map集合中的k-v數據保存到list集合中,從而對list排序
 1 import java.util.*;
 2 
 3 /**
 4  * 統計字符串中字符出現的次數並按照次數降序輸出
 5  */
 6 public class CountCharDemo {
 7     public static void main(String[] args) {
 8         Scanner scanner = new Scanner(System.in);
 9         System.out.println("請輸入任意字符串");
10         String str = scanner.next();
11         //轉換得到字符數組表示
12         char[] chs = str.toCharArray();
13         //創建Map集合保存字符出現的次數
14         Map<Character,Integer> map = new HashMap<>();
15         //遍歷字符數組,判斷字符是否出現在map中,若出現,則次數+1,
16         //否則將字符存入map,並將次數設為1
17         for (char c:chs) {
18             if(map.containsKey(c)){
19                 map.put(c,map.get(c)+1);
20             }else {
21                 map.put(c,1);
22             }
23         }
24        // map.forEach((k,v)-> System.out.println(k+"-"+v));
25         //對map中的鍵值對數據根據value(次數)降序排列
26         //將map中的所有k-v數據存入list,然后對list排序即可
27         List<Map.Entry<Character,Integer>> list =
28                 new ArrayList<>(map.entrySet());
29         Collections.sort(list,
30                 new Comparator<Map.Entry<Character, Integer>>() {
31             @Override
32             public int compare(Map.Entry<Character, Integer> o1,
33                                Map.Entry<Character, Integer> o2) {
34                 return o2.getValue()-o1.getValue();
35             }
36         });
37         //遍歷list
38         for (Map.Entry<Character,Integer> entry:list) {
39             System.out.println(entry);
40         }
41     }
42 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM