对字符串统计每个词的出现的次数,并按出现次数多少排序输出

这是一道面试题,也是java基础体现的一个题目。

题目要求:

有一个输入字符串,例如:String s=”welcome to ***”. 词中间有空格, 请统计每个词出现的次数,并按出现次数多少排序输出。

以下代码分别是两种方法实现: 

public class Demo {
    public static void main(String[] args) {
        String s = "welcome to rds";
        method1(s);
        method2(s);
    }

    //方法一
    public static void method1(String s) {
        Integer count;
        Map map = new HashMap<>();
        List> list = new ArrayList<>();
        // 拆分字符串,统计字符个数
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            count = map.get(ch);
            if (count == null) {
                map.put(ch, 1);
            } else {
                map.put(ch, ++count);
            }
        }
        // 遍历map,存到list中
        for (Map.Entry entry : map.entrySet()) {
            list.add(entry);
        }
        // 根据字符个数进行比较
        Collections.sort(list, new Comparator>() {
            @Override
            public int compare(Map.Entry o1, Map.Entry o2) {
                //return o1.getValue() - o2.getValue(); // 升序
                return o2.getValue() - o1.getValue(); // 降序
            }
        });
        // 遍历排序后输出
        for (Map.Entry entry : list) {
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }
    }

    //方法二
    public static void method2(String s) {
        Map map = new HashMap<>();
        List> list = new ArrayList<>();
        // 拆分字符串,统计字符个数
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (map.containsKey(ch)) {
                map.put(ch, map.get(ch) + 1);
            } else {
                map.put(ch, 1);
            }
        }
        // 遍历map,存到list中
        list.addAll(map.entrySet());
        // 根据字符个数进行比较
        Collections.sort(list, new Comparator>() {
            @Override
            public int compare(Map.Entry o1, Map.Entry o2) {
                //return o1.getValue() - o2.getValue(); // 升序
                return o2.getValue() - o1.getValue(); // 降序
            }
        });
        // 遍历排序后输出
        for (Map.Entry entry : list) {
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }
    }

}

 

你可能感兴趣的:(java)