
本文旨在介绍如何使用java stream api高效地统计字符串中的唯一单词数量。通过结合字符串预处理、拆分、去重和计数等操作,stream api提供了一种简洁且强大的方法来解决此类文本处理任务,避免了传统手动迭代和数据结构管理的复杂性,显著提升了代码的可读性和开发效率。
在Java开发中,统计字符串中唯一单词的数量是一个常见的文本处理需求。例如,分析文本内容、生成关键词列表或进行数据清洗时,都需要准确识别并计数不重复的单词。虽然可以采用传统的循环和条件判断结合数据结构(如Set)的方式实现,但Java 8引入的Stream API为这类任务提供了更为简洁、高效且富有表达力的解决方案。本文将详细阐述如何利用Stream API的强大功能,优雅地完成字符串唯一单词的统计。
要准确统计唯一单词,我们需要处理几个关键步骤:
Stream API通过链式操作将这些步骤无缝连接起来,形成一个清晰的数据处理管道。
以下是使用Java Stream API统计唯一单词的具体实现方法:
立即学习“Java免费学习笔记(深入)”;
import java.util.Arrays;
public class UniqueWordCounter {
/**
* 统计字符串中唯一单词的数量。
* 该方法会忽略大小写,并移除标点符号。
*
* @param str 待处理的输入字符串。
* @return 字符串中唯一单词的数量。
*/
public static long countUniqueWords(String str) {
// 1. 预处理字符串:移除所有非字母、非数字、非空格的字符,并将多个连续空格替换为单个空格
// 注意:这里假设单词由字母和数字组成,并以空格分隔。
String cleanedStr = str.replaceAll("[^a-zA-Z0-9 ]", "") // 移除所有非字母、非数字、非空格字符
.replaceAll(" +", " ") // 将一个或多个连续空格替换为单个空格
.trim(); // 移除字符串首尾的空格
// 2. 将预处理后的字符串按空格拆分为单词数组
// 如果 cleanedStr 为空字符串,split(" ") 会返回一个包含空字符串的数组,需要特殊处理
if (cleanedStr.isEmpty()) {
return 0;
}
String[] words = cleanedStr.split(" ");
// 3. 将单词数组转换为Stream,并进行去重和计数
return Arrays.stream(words)
.distinct() // 移除重复的单词
.count(); // 统计剩余单词的数量
}
public static void main(String[] args) {
String sentence1 = "A long long time ago, I can still remember";
System.out.println("句子: \"" + sentence1 + "\" 中的唯一单词数: " + countUniqueWords(sentence1)); // 预期输出: 8
String sentence2 = "Hello world, hello Java! Java is great.";
System.out.println("句子: \"" + sentence2 + "\" 中的唯一单词数: " + countUniqueWords(sentence2)); // 预期输出: 5 (Hello, world, Java, is, great)
String sentence3 = " apple, banana, apple, orange ";
System.out.println("句子: \"" + sentence3 + "\" 中的唯一单词数: " + countUniqueWords(sentence3)); // 预期输出: 3 (apple, banana, orange)
String emptySentence = "";
System.out.println("句子: \"" + emptySentence + "\" 中的唯一单词数: " + countUniqueWords(emptySentence)); // 预期输出: 0
String punctuationOnly = "!!!???---";
System.out.println("句子: \"" + punctuationOnly + "\" 中的唯一单词数: " + countUniqueWords(punctuationOnly)); // 预期输出: 0
}
}str.replaceAll("[^a-zA-Z0-9 ]", ""):
.replaceAll(" +", " ").trim():
cleanedStr.split(" "):
Arrays.stream(words):
.distinct():
.count():
Java Stream API为统计字符串中的唯一单词提供了一种现代、高效且易于理解的解决方案。通过结合正则表达式进行字符串预处理,然后利用Stream的拆分、去重和计数功能,我们可以用极少的代码实现复杂的文本分析逻辑。掌握Stream API是现代Java开发者的必备技能,它能极大地提升代码质量和开发效率。
以上就是使用Java Stream API统计字符串中的唯一单词的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号