统计一段字符串中单词和字母各出现的次数

各个字母出现的次数

各个单词出现的次数

package sun.rain.amazing;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.junit.Test;

/**
 *
 *  计算单词word  字母letter 出现的次数
 *
 * @author sunRainAmazing
 * 
 */
public class StringWordCount {


    /**
     * 判断字母出现的次数采用map形式
     */
    @Test
    public void testLetterCountMap(){
        String str = "da~daef#2!kild";  
        //1、去除其他非单词字母字符,保留单词字母  
        str = str.replaceAll("[\\W]", "");
        //2、创建Map集合,字母用char类型的包装类接收、出现的次数用int类型的包装类接收 
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        //3、将其转为char类型的数组 进行判断
        char[] ch = str.toCharArray();
        //4、进行统计相应的字母出现的次数
        for (int i = 0; i < ch.length; i++) {  
            //判断集合中是否包含该字符, 
            if (map.containsKey(ch[i])) {
                //是则只需将该字符次数加1  
                map.put(ch[i], map.get(ch[i]) + 1);  
            } else {
                // 若不是,将该字符添加进去 初始出现次数值为1.  
                map.put(ch[i], 1);  
            }  
        }  
        System.out.println(map);// 打印集合  
    }



    /**
     * 统计单词出现的次数  如 hello world Java , hello
     *      hello       出现 2次
     *      world   出现1次
     *      Java    出现1次
     */
    @Test
    public void testWordCountString(){
        //多关心一下自己的父母吧,我们总忙着自己成长,却忘了他们也在慢慢变老。
        String str = "Love your parents."
                + "We are too busy      growing up yet we "
                + "forget that they are already growing old";  
        //1、将非字母的字符 替换为一个空格
        str = str.replaceAll("[\\W]", " ");
        //2、将其根据空格 分割成为字符串数组
        String[] strArray = str.split("\\s");
        Map<String, Integer> map = new HashMap<String, Integer>();
        //3、循环遍历 进行判断
        for (int i = 0; i < strArray.length; i++) {
                //判断条件为 是否已经添加  
              if (map.containsKey(strArray[i])) {
                //是则只需将该字符次数加1  
                  map.put(strArray[i], map.get(strArray[i]) + 1);  
                  //并且对应的是否为空字符串 "" 
              } else if(!strArray[i].equals("")) {
                // 若不是,将该字符添加进去 初始出现次数值为1.  
                  map.put(strArray[i], 1);  
              }  
        }
        System.out.println(map);// 打印集合  

        printMap(map);// 打印集合  
    }




    /**
     * 获取map中的值
     */
    private void printMap(Map<String,Integer> map){
        Set<Entry<String, Integer>> entries = map.entrySet( );
        if(entries != null) {
            Iterator<Entry<String, Integer>> iterator = entries.iterator( );
            while(iterator.hasNext( )) {
                Map.Entry<String,Integer> entry =(Entry<String, Integer>) iterator.next( );
//              Object key = entry.getKey();
//              Object value = entry.getValue();
                System.out.println(entry.getKey()+"\t\t:"+entry.getValue()+"次");
            }
        }

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值