对 字符串中的字符、字串,进行统计,按重复度进行排序

——将字符串中的 字符or字串 按出现次数多少排序输出

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;


/**
 *  对 字符串中的字符、字串,进行统计,按重复度进行排序
 *  (将字符串中的 字符 按出现次数多少排序输出 )
 * @author qing
 *
 */
public class StrORCharSort {
    public static void main(String[] args) {
        
        
        try {
            /*
             * // 键盘输入,转化 方式一 Scanner scanner = new Scanner(System.in); String
             * inputStr = scanner.nextLine();
             * System.out.println("scanner.nextLine():---" + inputStr);
             */
            // 键盘输入,转化 方式一
            // 接收,并读取 键盘输入内容,放入Buffer中(目前以流的形式存在)
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            // (1)将Buffer中的内容转换为String类型数据,
            // (2)合并 字符串中的 连续的空格 为一个
            String input = br.readLine().replaceAll("\s{1,}", " ");
            // 根据空格“ ”字符,将字符串 切割为 字符串数组
            String[] userStr = input.split(" ");
            
            // String系列            
            Map<String,Integer> map = new HashMap<String,Integer>();
            for (int i = 0; i < userStr.length; i++) {
                String tempStr = userStr[i];
                if(map.containsKey(tempStr)){
                    // 已经存在
                    Integer num = map.get(tempStr);
                    map.put(tempStr, num+1);
                }else {
                    // 首次出现
                    map.put(tempStr, 1);
                    System.out.println(tempStr);
                }
            }
            
            /*
            // char系列
            String strTemp = "aabcddefgg";
            char[] str = strTemp.toCharArray();
            
            Map<String,Integer> map = new HashMap<String,Integer>();
            for (int i = 0; i < str.length; i++) {
                String tempStr = String.valueOf(str[i]);
                if(map.containsKey(tempStr)){
                    // 已经存在
                    Integer num = map.get(tempStr);
                    map.put(tempStr, num+1);
                }else {
                    // 首次出现
                    map.put(tempStr, 1);
                    System.out.println(tempStr);
                }
            }*/
            
            // 将Map中的数据转存List中,便于 后面工具类Collections的排序处理
            List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>();
            list.addAll(map.entrySet());
            
            /**
             * 重写Collections工具类的sort()方法,
             * 对list中的entry,按照value值进行排列  
             */
            Collections.sort(list,new Comparator<Entry<String, Integer>>() {
                public int compare(Entry<String, Integer> arg0,Entry<String, Integer> arg1){
                    
                    /*
                     * 由少到多【升序】: arg0<---->arg1
                     * retrun arg0.getValue().compareTo(arg1.getValue());
                     */
                    
                    // 由多到少【降序】: arg1<---->arg0
                    return arg1.getValue().compareTo(arg0.getValue());
                }
            });
            
            // 循环取用  有序list 中Map.Entry中的数据
            for (int i = 0; i < list.size(); i++) {
                Map.Entry<String, Integer> mEntry = list.get(i);
                System.out.println("key:"+mEntry.getKey()+"   value:"+mEntry.getValue());
            }
                
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

原文地址:https://www.cnblogs.com/bridgestone29-08/p/6561023.html