[英]How to compare 2 statements in java
是否可以像這樣比較2個字符串。
String test1 = "foo bar abc";
String test2 = "bar abc foo";
通常在java中不是String equals
。
我想通過按空格分割字符串並比較來使用ArrayList
或array
。
還有其他方法嗎? 哪一個更好?
我想回答foo bar abc和bar abc foo是一樣的。 我想知道兩個是否出現相同的單詞。
如果你的字符串代表單詞集(即沒有重復的集合),那么自然的解決方案就是使用集合 :
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));
您可以拆分兩個字符串,對結果數組進行排序並進行比較。
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);
}
您可以通過將兩個字符串拆分為單獨的單詞(使用正則表達式)來為每個字符串創建一個列表。
然后,您可以檢查第二個列表是否包含第一個列表中的所有值:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.