通過hashmap判斷一個字串中各個字母出現的次數
阿新 • • 發佈:2019-02-20
練習:
“adsafdsafssdfdsfgfdaseawr”獲取該字串中字元出現的次數
思路:
每個字母對應一個次數————————map集合
1,將字串轉換為字元陣列,因為對每個字母進行操作
2,定義map集合,因為列印結果的字元有順序,所以使用treemap
3,遍歷字元陣列
將每個字母作為鍵放入map集合中
“adsafdsafssdfdsfgfdaseawr”獲取該字串中字元出現的次數
思路:
每個字母對應一個次數————————map集合
1,將字串轉換為字元陣列,因為對每個字母進行操作
2,定義map集合,因為列印結果的字元有順序,所以使用treemap
3,遍歷字元陣列
將每個字母作為鍵放入map集合中
若相同則自增覆蓋源鍵對應的值
import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class Map2lixi2 { public static void main(String[] args){ System.out.println(charcount ("ad+_=sa-f=d-=s=afssdfdsfgfdaseawr")); } public static String charcount (String str) { char[] chs = str.toCharArray(); TreeMap<Character, Integer> tm = new TreeMap<>(); int count=0; for(int x=0;x<chs.length;x++) { if(!(chs[x]>='a'&& chs[x]<='z') || (chs[x]>='A'&& chs[x]<='Z')) continue; Integer value = tm.get(chs[x]); /*if(value==null) { tm.put(chs[x], 1); } else { value++; tm.put(chs[x], value); }*/ if(value!=null) count=value; count++; tm.put(chs[x], count); count=0; } //System.out.println(tm); StringBuilder sb = new StringBuilder(); Set<Map.Entry<Character, Integer>> me = tm.entrySet(); Iterator<Map.Entry<Character, Integer>> it = me.iterator(); while(it.hasNext()) { Map.Entry<Character, Integer> m = it.next(); Character ch = m.getKey(); Integer in = m.getValue(); sb.append(ch+"("+in+")"); } return sb.toString(); } }