簡體   English   中英

如何比較java中的2個語句

[英]How to compare 2 statements in java

是否可以像這樣比較2個字符串。

String test1 = "foo bar abc";
String test2 = "bar abc foo";

通常在java中不是String equals

我想通過按空格分割字符串並比較來使用ArrayListarray

還有其他方法嗎? 哪一個更好?

我想回答foo bar abcbar 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM