行业资讯 2025年08月6日
0 收藏 0 点赞 556 浏览 1914 个字
摘要 :

文章目录 2. 使用Stream查找重复单词 3. 使用集合查找重复单词 4.结论 在 Java 字符串中查找重复或重复的单词是一个非常常见的面试问题。我们可以使用不同的方法(例如……




在 Java 字符串中查找重复或重复的单词是一个非常常见的面试问题。我们可以使用不同的方法(例如Collections和Java 8 Streams )找到所有重复的单词。

假设我们有一个带有名称的字符串。我们想要计算哪些名字出现多次。我们可能还想计算此类重复单词以及所有单词的出现次数。

String sentence = \"alex brian charles alex charles david eric david\";

上面的字符串包含 3 个出现两次的重复单词和两个唯一单词。

alex=2
charles=2
david=2

brian=1
eric=1

2. 使用Stream查找重复单词

Java Stream API 提供了几种有用的方法来迭代集合、执行中间操作以及将匹配项收集到新集合中。

  • 在给定的 Java 程序中,我们执行以下步骤:
  • 用空格分割字符串以获取String[]中的所有单词
  • 将String[]转换为包含所有单词的列表
  • 使用Stream迭代List并查找重复单词

为了确定一个单词是否重复,我们维护一个HashSet。如果Set.add()方法返回false,则意味着该单词已存在于集合中,因此它是重复的。

List<String> wordsList = Arrays.stream(sentence.split(\" \")).collect(Collectors.toList());

Set<String> tempSet = new HashSet<>();

List<String> duplicateWords = wordsList.stream()
    .filter(w -> !tempSet.add(w))
    .collect(Collectors.toList());

System.out.println(duplicateWords);

程序输出:

[alex, charles, david]

假设我们想要计算句子中每个单词的出现次数,那么我们可以使用toMap()收集单词并使用Math::addExact计算出现次数。

List<String> wordsList = Arrays.stream(sentence.split(\" \")).collect(Collectors.toList());

Map<String, Integer> wordsMapWithCount = wordsList.stream()
        .collect(Collectors.toMap(Function.identity(), word -> 1, Math::addExact));

System.out.println(wordsMapWithCount);

程序输出:

{alex=2, charles=2, david=2}

3. 使用集合查找重复单词

很大程度上,使用集合查找重复项的过程与以前的方法类似。

我们首先分割字符串并收集List中的所有单词。然后我们使用HashSet.add()方法来检查单词是否唯一或重复。

List<String> wordsList = Arrays.asList(sentence.split(\" \"));
Set<String> tempSet = new HashSet<>();
List<String> duplicateWords = new ArrayList<>();

for (String word : wordsList) {
  if (!tempSet.add(word)) {
    duplicateWords.add(word);
  }
}

System.out.println(duplicateWords);

程序输出:

[alex, charles, david]

如果我们有兴趣查找重复单词及其在String中出现的次数,我们可以使用Collections.Frequency(list, item) API 来计算某个项目在指定list中出现的次数。

Map<String, Integer> dupWordsMapWithCount = new HashMap<>();

for (String word : duplicateWords) {

  dupWordsMapWithCount.put(word, Collections.frequency(wordsList, word));
}

System.out.println(dupWordsMapWithCount);

程序输出:

{alex=2, charles=2, david=2}

4.结论

在本 Java 教程中,我们讨论了查找字符串中所有重复单词以及它们在该字符串中出现的次数的两种方法。这些 Java 程序也可用于查找字符串中的唯一单词。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9195.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号