当我们需要提取两个字符串中相同的元素时,可以采用以下两种方法:
方法一:利用Java集合框架的交集函数
Java集合框架提供了intersection函数可以方便的求出两个已知集合的交集,因此我们可以将两个字符串分别转化为字符数组,然后再转化为集合,最后求出它们的交集。
示例一:
String str1 = "abcde";
String str2 = "cdefg";
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
Set<Character> set1 = new HashSet<Character>();
Set<Character> set2 = new HashSet<Character>();
for (char c : arr1) {
set1.add(c);
}
for (char c : arr2) {
set2.add(c);
}
set1.retainAll(set2);
System.out.println("两个字符串的交集为:" + set1);
该代码首先将两个字符串分别转为字符数组,然后通过循环将数组中的元素全部加入到两个集合set1和set2中,最后利用set1.retainAll(set2)函数求出交集,结果为:c, d, e。
示例二:
我们可以对上述代码进行一定的封装和优化,将其编写为一个函数,并对重复的元素进行过滤:
public static Set<Character> getIntersection(String str1, String str2) {
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
Set<Character> set1 = new HashSet<Character>();
Set<Character> set2 = new HashSet<Character>();
for (char c : arr1) {
set1.add(c);
}
for (char c : arr2) {
set2.add(c);
}
set1.retainAll(set2);
Set<Character> result = new HashSet<Character>();
for (char c : set1) {
if (Collections.frequency(set1, c) > 1 && !result.contains(c)) {
result.add(c);
}
}
return result;
}
该代码通过Collections.frequency(set1, c)函数统计集合中元素c的出现次数,然后对于出现重复且还未加入到result集合中的元素进行过滤,最终将符合条件的交集返回。
方法二:利用Java中的正则表达式
利用Java中的正则表达式,可以方便的提取两个字符串中相同的元素。
示例三:
String str1 = "abcde";
String str2 = "cdefg";
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
String regex = "[" + new String(arr1) + new String(arr2) + "]+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(regex);
while (matcher.find()) {
System.out.print(matcher.group() + " ");
}
该代码首先将两个字符串分别转为字符数组,并将它们拼接到正则表达式中,最后通过Pattern和Matcher函数将正则表达式应用于字符串中,并输出筛选出来的交集,即"c","d","e"。
以上就是Java提取两个字符串中的相同元素方法的完整攻略,希望对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java提取两个字符串中的相同元素方法 - Python技术站