Map集合的練習:獲取每個字串出現的次數,輸出形式:a(1)b(2)。。。。。
阿新 • • 發佈:2018-11-28
package classdemo; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /** * Map集合練習 需求:“fhsadfhsafjdsaoifuuqewofasjdflsafdsa” * 獲取每個字串出現的次數,輸出形式:a(1)b(2)。。。。。 */ public class ExceptionDemo { public static void main(String[] args) { String str = "fhsadfhsafjdsaoifuuqewofasjdflsafdsa"; String char_count = getCharCount(str); System.out.println(char_count); } private static String getCharCount(String str) { // 將字串轉成字元陣列 char[] ch = str.toCharArray(); // 定義map集合表 Map<Character, Integer> map = new TreeMap<Character, Integer>(); // 遍歷陣列,獲取每個字母 for (int i = 0; i < ch.length; i++) { //只對字母進行操作 if (!(ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z')) continue; //將獲取的字母作為key去查表,獲取value。 Integer value = map.get(ch[i]); int count = 0;//用於記錄次數 //如果次數存在就存在則記錄次數,如果次數不存在則不記錄,自增! if (value != null) { count = value; } count++; map.put(ch[i], count); /** * 第二種思路 */ // if(value == null) { // map.put(ch[i], 1); // }else { // value++; // map.put(ch[i], value); // } } return toString(map); } private static String toString(Map<Character, Integer> map) { //資料多,無論什麼型別,最終變成字串,使用stringBuilder StringBuilder sb = new StringBuilder(); //遍歷map集合,使用keyset Set<Character> set = map.keySet(); for (Iterator<Character> it = set.iterator(); it.hasNext();) { Character key = it.next(); Integer value = map.get(key); sb.append(key + "(" + value + ")"); } return sb.toString(); } }