2015-03-03 61 views
0

我有兩個數組列表。在Java中的數組列表中不匹配產品名稱

capturedForeginProduct:國外產品名稱

capturedLocalProducts:本地產品名稱

capturedForeginProduct數組列表包含下列國外產品的名稱。

華盛頓蘋果飲料

令牌蘋果飲料

斯金納蘋果飲料

capturedLocalProducts數組列表包含以下本地產品名稱。

SUNFRESH蘋果飲料RTS 1L

APPY FIZZ閃亮蘋果飲料

APPY蘋果飲料250毫升PET瓶

我用下面的代碼片段打擊capturedForeginProduct匹配的產品名稱數組列表到capturedLocalProducts數組列表。

if(capturedForeginProduct.get(i).equals(capturedLocalProducts.get(j))) { 

但它不匹配任何產品。基本上我的最終結果應該如下。

華盛頓蘋果飲料

令牌蘋果飲料

斯金納蘋果飲料

應該配合,

SUNFRESH蘋果飲料RTS 1L

APPY FIZZ蘋果汽酒飲料

APPY蘋果飲料250毫升PET瓶

爲每個產品都包含 「蘋果」 的措辭。我不介意它是否包含首都,但如果這個詞是可用的,那麼它應該匹配。

這是我的代碼,爲了執行這個特定的任務。

for (int i = 0; i < capturedForeginProduct.size(); i++) { 

    for (int j = 0; j < capturedLocalProducts.size(); j++) { 
     // if(capturedForeginProduct.get(i).contains("Garlic")) { 
     // if (Pattern.compile(Pattern.quote(capturedLocalProducts.get(j)), Pattern.CASE_INSENSITIVE).matcher(capturedForeginProduct.get(i)).find() || capturedLocalProducts.get(j).toLowerCase().contains(capturedForeginProduct.get(i).toLowerCase())) { 

     if (capturedForeginProduct.get(i).equals(capturedLocalProducts.get(j))) { 
      // if(capturedLocalProducts.get(i).equals("SUNFRESH Mango Drink RTS 1L")) { 

      log.debug("Matching Second Chance .. : " + "\t" + capturedForeginProduct.get(i) + "\t" + capturedLocalProducts.get(j)); 
      firstForeignProducts.add(capturedForeginProduct.get(i)); 
      firstLocalProducts.add(capturedLocalProducts.get(j)); 
     } else { 
      log.debug("Un Matching Second Chance .. : " + "\t" + capturedForeginProduct.get(i) + "\t" + capturedLocalProducts.get(j)); 
     } 
    } 
} 

謝謝。

+2

聽起來像經典不實現equals()(是和散列碼)的方法,但請你可以發佈一些代碼... – Adam 2015-03-03 07:41:30

+0

當然我會更新問題@亞當 – 2015-03-03 07:42:33

+2

你應該比較不是整個字符串,但部分,因爲我認爲「華盛頓蘋果飲料」和「SUNFRESH蘋果飲料RTS 1L」是每一個str ing - 當你想根據內容的一部分比較它們時,'equals'不是正確的方法,因爲'String#equals'檢查整個字符串是否相等。 – Smutje 2015-03-03 07:43:50

回答

0

您可以檢查是否有兩句相互字如下:

String sentence1 = "Washington Apple Drink"; 
String sentence2 = "SUNFRESH Apple Drink RTS 1L"; 

List<String> sen1 = Arrays.asList(sentence1.split(" ")); 
List<String> sen2 = Arrays.asList(sentence2.split(" ")); 

for (String s : sen1) { 
    if (sen2.contains(s)) { 
     System.out.println("The word " + s + " appears in both sentences"); 
    } 
} 

輸出

The word Apple appears in both sentences 
The word Drink appears in both sentences 
+1

它的工作!高尚的^ _ ^ – 2015-03-03 08:08:21

0

您需要拆分名稱並比較每個部分。

String foreign = capturedForeginProduct.get(i); 
String local = capturedLocalProducts.get(j); 

String[] foreignWords = foreign.split(" "); 
String[] localWords = local.split(" "); 

最後迭代兩個數組並比較每個單詞。

相關問題