是否可以像这样比较2个字符串。如何比较java中的2条语句
String test1 = "foo bar abc";
String test2 = "bar abc foo";
在java中通常不是字符串equals
。
我想用ArrayList
或array
通过空格分割字符串并进行比较。
是否有其他方法可用? 哪一个更好?
我想回答富巴ABC和酒吧ABC富是相同的。我想知道两个词是否出现在同一个词中。
是否可以像这样比较2个字符串。如何比较java中的2条语句
String test1 = "foo bar abc";
String test2 = "bar abc foo";
在java中通常不是字符串equals
。
我想用ArrayList
或array
通过空格分割字符串并进行比较。
是否有其他方法可用? 哪一个更好?
我想回答富巴ABC和酒吧ABC富是相同的。我想知道两个词是否出现在同一个词中。
如果你的字符串表示词的集合(即没有重复的集合),自然的解决方案是使用Sets :
String test1 = "foo bar abc";
String test2 = "bar abc foo";
HashSet<String> set1 = new HashSet<>(Arrays.asList(test1.split(" ")));
HashSet<String> set2 = new HashSet<>(Arrays.asList(test2.split(" ")));
System.out.println(set1.equals(set2));
如果'test2 =“bar abc abc bar foo foo”'?如果与测试1相比,这应该是真的还是假? –
该问题应该针对OP。我想他在这种情况下认为他们是平等的。但我在这里可能是错的... –
我同意 - 但这只是值得一提的。从技术上说,同样的词在那里,所以如果重复不重要,这是好的 –
通过将两个字符串拆分为不同的单词(使用正则表达式),您可以从每个字符串中创建一个列表。
然后你可以检查第二列表包含在第一列表中的值:
String test1 = "foo bar abc";
String test2 = "bar abc foo";
List<String> list1 =Arrays.asList(test1.split("\\s+"));
List<String> list2 =Arrays.asList(test2.split("\\s+"));
if(!list2.containsAll(list1))
return false;//or print out "false", whichever suits you
这是许多可能性之一:
import java.util.Arrays;
(...)
String test1 = "foo bar abc";
String test2 = "bar abc foo";
if (Arrays.asList(test1.split("\\s+")).containsAll(Arrays.asList(test2.split("\\s+")))) {
return true;
} else {
return false;
}
您可以分割两个字符串,排序结果数组和比较他们。
public static void main(String[] args) {
String test1 = "foo bar abc";
String test2 = "bar abc foo";
System.out.println(method(test1, test2));
}
private static boolean method(String test1, String test2){
String[] tokens1 = test1.split(" ");
String[] tokens2 = test2.split(" ");
Arrays.sort(tokens1);
Arrays.sort(tokens2);
return Arrays.equals(tokens1, tokens2);
}
你想比较什么?这个词? – ItamarG3
是的,然后使用每个循环,并检查array2是否包含array1中的每个单词 – XtremeBaumer
分词和排序。比较数组是相同的 –