数据结构与算法】统计字符串中字符出现的次数

网友投稿 477 2022-11-13

【数据结构与算法】统计字符串中字符出现的次数

【数据结构与算法】统计字符串中字符出现的次数

目录

​​一、需求分析​​

​​二、代码实现​​

​​三、结果展示​​

一、需求分析

需求:统计字符串中字符出现的长度,按照长度排序;第一次出现字符排序

二、代码实现

package sort;import java.util.*;import java.util.stream.Collectors;import java.util.stream.Stream;/** * @author Marion * @date 2021/7/14 15:11 */public class StringSort { public static void main(String[] args) { /** * 需求:统计字符串中字符出现的长度,按照长度排序;第一次出现字符排序 * * 1. 将字符串切割成数组,遍历数组记录字符串出现的次数,k -> v 关联数组存储,k是字符,v是出现次数 * 2. 按照关联数组v倒序排序,输出关联数组 * 3. 遍历字符串,将k放入索引数组中,存在则不放入,最后输出索引数组 */ String target = "adshiusdhuheuwqheqnwkjnkdasknasdkasjdkljl"; char[] chars = target.toCharArray(); HashMap numSort = new HashMap<>(); for (int i = 0; i < chars.length; i++) { if (numSort.get(String.valueOf(chars[i])) != null) { numSort.put(String.valueOf(chars[i]), numSort.get(String.valueOf(chars[i])) + 1); } else { numSort.put(String.valueOf(chars[i]), 1); } } Stream.of(numSort).forEach(System.out::println); Map linkedMap = mapSortByValue(numSort); Stream.of(linkedMap).forEach(System.out::println); } /** * 对map按照value值正序并且返回 */ public static Map mapSortByValue(Map map) { Set> entries = map.entrySet(); List> list = new ArrayList<>(entries); list.sort((o1, o2) -> { if (o1.getValue() > o2.getValue()) { return -1; } else if (o1.getValue() < o2.getValue()) { return 1; } return 0; }); LinkedHashMap result = new LinkedHashMap<>(); list.forEach(v -> result.put(v.getKey(), v.getValue())); return result; }}

三、结果展示

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于slf4j_log4j2源码学习心得
下一篇:共享带来的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~