使用TreeMap或者HashMap统计单词个数和字母出现次数

来源:互联网 发布:me333j a能用4g网络吗 编辑:程序博客网 时间:2024/05/06 04:19

TreeMap可以自动排序,HashMap不可以自动排序

  import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;

import javax.swing.JOptionPane;

public class CharactorTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  //statWords();
  statChar();
 }
 //统计单词个数
 public static void statWords() {
  String str = JOptionPane.showInputDialog("输入一段文本");
  String[] s = str.split(" ");
  Map<String, Integer> aHash = new TreeMap<String, Integer>();
  for (int i = 0; i < s.length; i++) {
   Integer num = aHash.get(s[i]);
   if (num == null)
    aHash.put(s[i], 1);
   else
    aHash.put(s[i], num + 1);
  }
  printMapByEntry(aHash);
 }
 //统计字母出现字数
 public static void statChar() {
  String str = JOptionPane.showInputDialog("输入一段文本");
  
  Map<Character, Integer>bHash = new TreeMap<Character, Integer>();
  for (int i = 0; i < str.length(); i++) {
   char ch = str.charAt(i);
   Integer num = bHash.get(ch);
   if (num == null)
    bHash.put(ch, 1);
   else
    bHash.put(ch, num + 1);
  }
  printMap2ByEntry(bHash);
 }

//打印单词个数调用
 public static void printMapByEntry(Map<String, Integer> m) {
  Set<Map.Entry<String, Integer>> entrySet = m.entrySet();
  for (Map.Entry<String, Integer> ent : entrySet) {
   System.out.printf("%s:%d/n", ent.getKey(), ent.getValue());
  }
 }

//打印字母个数调用
 public static void printMap2ByEntry(Map<Character, Integer> m) {
  Set<Map.Entry<Character, Integer>> entrySet = m.entrySet();
  for (Map.Entry<Character, Integer> ent : entrySet) {
   System.out.printf("%s:%d/n", ent.getKey(), ent.getValue());
  }
 }
}

原创粉丝点击