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

本文介绍了一种使用Java TreeMap来统计文本中字符出现频率的方法。通过用户输入文本,程序能够统计每个字符出现的次数并自动排序输出。同时,还提供了一个统计单词频率的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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());
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值