【Java】統計字串中每個字元出現的次數
阿新 • • 發佈:2022-04-13
package LearnJava6; import java.util.HashMap; import java.util.Scanner; import java.util.Set; //統計字串中每個字元出現的次數 public class HashMapDemo3 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("請輸入字串:"); String line = sc.nextLine(); HashMap<Character,Integer> hm=new HashMap<Character,Integer>(); //遍歷字串,得到每一個字元 for (int i = 0; i < line.length(); i++) { char key = line.charAt(i); // 拿到的每一個字元作為鍵到HashMap中找對應的值 Integer value = hm.get(key); if (value==null){ // 如果不存在就把該字元作為key hm.put(key,1); }else { // 如果存在就數量+1,然後重新儲存該字元和值 value++; hm.put(key,value); } } StringBuilder sb=new StringBuilder(); Set<Character> keySet = hm.keySet(); for (Character key:keySet){ Integer value= hm.get(key); sb.append(key).append("(").append(value).append(")"); } String result = sb.toString(); System.out.println(result); } }
優化排序使用TreeMap
package LearnJava6; import java.util.HashMap; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; //統計字串中每個字元出現的次數 public class HashMapDemo3 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("請輸入字串:"); String line = sc.nextLine(); // HashMap<Character,Integer> hm=new HashMap<Character,Integer>(); // TreeMap排序 TreeMap<Character,Integer> hm=new TreeMap<Character,Integer>(); //遍歷字串,得到每一個字元 for (int i = 0; i < line.length(); i++) { char key = line.charAt(i); // 拿到的每一個字元作為鍵到HashMap中找對應的值 Integer value = hm.get(key); if (value==null){ // 如果不存在就把該字元作為key hm.put(key,1); }else { // 如果存在就數量+1,然後重新儲存該字元和值 value++; hm.put(key,value); } } StringBuilder sb=new StringBuilder(); Set<Character> keySet = hm.keySet(); for (Character key:keySet){ Integer value= hm.get(key); sb.append(key).append("(").append(value).append(")"); } String result = sb.toString(); System.out.println(result); } }