java边学边练之String,Number,Math(1)计算字符串中重复字符
2022/1/27 11:36:03
本文主要是介绍java边学边练之String,Number,Math(1)计算字符串中重复字符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
以下是我自己的的实现方式,最最最笨的方法!!!
public class demo { public static void main(String[] args) { String str = "gfhgdebhjf"; char[] ch = str.toCharArray(); for(int i= 0; i < ch.length; i ++){ char c = ch[i]; for(int j = i+1; j<ch.length; j++ ){ if(c == ch[j]){ System.out.println(c); } else{ continue; } } } } } 参考答案给了两种方法: (1)
public Map<Character, Integer> countDuplicateCharacters(String str) {
Map<Character, Integer> result = new HashMap<>();
// or use for(char ch: str.toCharArray()) { ... }
for (int i = 0; i<str.length(); i++) {
char ch = str.charAt(i);
result.compute(ch, (k, v) -> (v == null) ? 1 : ++v);
}
return result;
}
这个方法的主要实现思路是:将字符和它在字符串中出现的次数(利用HashMap的方式)存成键值对。
其中,你需要了解Java中的HashMap, (hashmap 是java提供的一种键值对的存储形式,其中,key 应该唯一,key和value都可以为空,指定key的value可以更改(采用compute方法)。
并且,需要熟知compute 方法,参考:Java HashMap compute() 方法 | 菜鸟教程 (runoob.com),补充说明:当一个空的hashMap使用compute方法时,会自动添加key和value。
(2)
public Map<Character, Long> countDuplicateCharacters(String str) {
Map<Character, Long> result = str.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.groupingBy(c -> c, Collectors.counting()));
return result;
}
这个方法主要是使用java8新增的流来实现。
第一眼看到这个答案,我的大脑的第一反映是:我不会!!!
经过查阅相关资料了解流是什么?
流的概念很广泛,参考:Java8系列--Java Stream入门篇(什么是Stream)_高自强的博客-CSDN博客_stream是什么,已经解决了本题中流的疑惑。
用一句话概括:流就是集合和lambda表达式的合体,主要解决数据的筛选和过滤。
在此答案中,首先使用string的chars()方法将string类型的变量转换成IntStream,再通过IntStream的mapToObj()方法结合lambda表达式(c->(char)c )来将IntStream转换成Stream<Charater>
(未完待学习。。。。Java 的stream)
这篇关于java边学边练之String,Number,Math(1)计算字符串中重复字符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解