Java 实现两个字符串中相同的词
在当今的软件开发中,解决字符串处理的问题是很常见的。而找到两个字符串中相同的词则是一个非常实用的需求。这篇文章将指导你实现这个功能,具体步骤如下:
流程概述
| 步骤 | 描述 |
|---|---|
| 1 | 将输入的字符串分割为单词 |
| 2 | 通过集合存储第一个字符串的单词 |
| 3 | 检查第二个字符串的每个单词是否在集合中 |
| 4 | 收集所有相同的单词并输出 |
状态图
stateDiagram
[*] --> 输入字符串
输入字符串 --> 分割单词
分割单词 --> 存储第一个字符串的单词
存储第一个字符串的单词 --> 检查第二个字符串的单词
检查第二个字符串的单词 --> 收集相同的单词
收集相同的单词 --> 输出结果
代码实现
1. 分割字符串
首先,我们需要将输入的字符串分割成单个的单词。可以使用 Java 的 split() 方法。
String str1 = "apple orange banana grape";
String str2 = "banana kiwi apple mango";
// 分割字符串
String[] words1 = str1.split(" ");
String[] words2 = str2.split(" ");
解释:上述代码将字符串 str1 和 str2 分割成若干个单词,并将结果存储在 words1 和 words2 数组中。
2. 将第一个字符串的单词存储到集合中
使用 HashSet 来存储第一个字符串的单词,这样可以提高查找的效率。
import java.util.HashSet;
import java.util.Set;
Set<String> wordSet = new HashSet<>(); // 创建一个 HashSet 用于存储单词
// 将第一个字符串的单词添加到集合中
for (String word : words1) {
wordSet.add(word); // 将每个单词添加到集合中
}
解释:我们创建了一个 HashSet,并通过循环将第一个字符串中的所有单词添加到这个集合中。
3. 检查第二个字符串的单词
接下来,我们将检查第二个字符串的单词是否在我们之前创建的集合中。
Set<String> commonWords = new HashSet<>(); // 用于存储相同的单词
// 检查第二个字符串的每个单词是否在第一个字符串的集合中
for (String word : words2) {
if (wordSet.contains(word)) { // 如果集合中包含这个单词
commonWords.add(word); // 将相同的单词添加到结果集中
}
}
解释:通过使用 contains() 方法,我们可以判断第二个字符串的单词是否在集合中,并将相同的单词存储到 commonWords 集合中。
4. 输出结果
最后,我们需要将找到的所有相同单词打印出来。
// 输出相同的单词
if (commonWords.isEmpty()) {
System.out.println("没有相同的单词");
} else {
System.out.println("相同的单词有: " + commonWords);
}
解释:首先检查 commonWords 是否为空,如果不为空则打印出相同的单词。
完整代码示例
将所有步骤整合起来,我们可以得到完整的代码如下:
import java.util.HashSet;
import java.util.Set;
public class CommonWordsFinder {
public static void main(String[] args) {
String str1 = "apple orange banana grape";
String str2 = "banana kiwi apple mango";
// 分割字符串
String[] words1 = str1.split(" ");
String[] words2 = str2.split(" ");
// 存储第一个字符串的单词
Set<String> wordSet = new HashSet<>();
for (String word : words1) {
wordSet.add(word);
}
// 检查第二个字符串的单词
Set<String> commonWords = new HashSet<>();
for (String word : words2) {
if (wordSet.contains(word)) {
commonWords.add(word);
}
}
// 输出结果
if (commonWords.isEmpty()) {
System.out.println("没有相同的单词");
} else {
System.out.println("相同的单词有: " + commonWords);
}
}
}
结论
通过以上步骤,我们实现了一个简单的 Java 程序来查找两个字符串中相同的单词。理解了每一步后,你应该能够灵活运用这段代码在不同场景下解决类似问题。希望这篇文章能够帮助到你,祝你在编程的道路上越走越远!
















