java如何在字符串中获取不同的字符及其数量
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,小编给大家分享一下java如何在字符串中获取不同的字符及其数量,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如何在字符串中获取不同的字符及其数量这道题可以拆解为两个步骤,第一步,找出
千家信息网最后更新 2024年10月17日java如何在字符串中获取不同的字符及其数量
小编给大家分享一下java如何在字符串中获取不同的字符及其数量,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
如何在字符串中获取不同的字符及其数量
这道题可以拆解为两个步骤,第一步,找出不同的字符,第二步,统计出它们的数量。好像有点废话,是不是?那我先来一个答案吧。
public class DistinctCharsCount { public static void main(String[] args) { printDistinctCharsWithCount("itwanger"); printDistinctCharsWithCount("chenmowanger"); } private static void printDistinctCharsWithCount(String input) { MapcharsWithCountMap = new LinkedHashMap<>(); for (char c : input.toCharArray()) { Integer oldValue = charsWithCountMap.get(c); int newValue = (oldValue == null) ? 1 : Integer.sum(oldValue, 1); charsWithCountMap.put(c, newValue); } System.out.println(charsWithCountMap); } }
程序输出的结果是:
{i=1, t=1, w=1, a=1, n=1, g=1, e=1, r=1} {c=1, h=1, e=2, n=2, m=1, o=1, w=1, a=1, g=1, r=1}
说一下我的思路:
1)声明一个 LinkedHashMap,也可以用 HashMap,不过前者可以保持字符串拆分后的顺序,结果看起来更一目了然。
为什么要用 Map 呢?因为 Map 的 key 是不允许重复的,刚好可以对重复的字符进行数量的累加。
2)把字符串拆分成字符,进行遍历。
3)如果 key 为 null 的话,就表明它的数量要 +1;否则的话,就在之前的值上 +1,然后重新 put 到 Map 中,这样就覆盖了之前的字符数量。
思路很清晰,对不对?忍不住给自己鼓个掌。
那,JDK 8 之后,Map 新增了一个很厉害的方法 merge(),一次性为多个键赋值:
private static void printDistinctCharsWithCountMerge(String input) { MapcharsWithCountMap = new LinkedHashMap<>(); for (char c : input.toCharArray()) { charsWithCountMap.merge(c, 1, Integer::sum); } System.out.println(charsWithCountMap); }
有没有很厉害?一行代码就搞定。第一个参数为键,第二个参数为值,第三个参数是一个 BiFunction,意思是,如果键已经存在了,就重新根据 BiFunction 计算新的值。
如果字符是第一次出现,就赋值为 1;否则,就把之前的值 sum 1。
看完了这篇文章,相信你对"java如何在字符串中获取不同的字符及其数量"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
字符
数量
字符串
不同
参数
厉害
思路
篇文章
结果
不对
一目了然
一次性
一行
三个
两个
代码
多个
完了
废话
意思
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
粤港澳 网络安全
app软件开发工程师简历
域控服务器的安全
sql怎么还原备份数据库
腾讯云高防服务器租用价格
网络安全与防护课程大作业
网络技术管理岗面试题
益阳软件开发培训学费
自家网络搭建服务器是违法吗
网络技术在初中历史教学应用
服务器插鼠标不显示鼠标
数据库改造支持ipv6
技术支持数据库
西工大计算机网络安全
云顶之弈新加坡服务器叫什么
河北超频服务器技术指导
网络安全主题教育工作会议
电脑打不开rpc服务器不可用
网络安全靠人手抄报文字
只狼手游服务器不见了怎么办
软件开发项目管理人员组成表
部队网络安全整顿检查
乌鲁木齐网络技术调试
亚马逊云服务器限制
梦幻西游服务器文件
医疗纠纷法律案件数据库
美元出售网络安全业务
数据库中的控制语句
给数据库表增加字段
家用服务器 cpu