我有兩個數組列表。在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));
}
}
}
謝謝。
聽起來像經典不實現equals()(是和散列碼)的方法,但請你可以發佈一些代碼... – Adam 2015-03-03 07:41:30
當然我會更新問題@亞當 – 2015-03-03 07:42:33
你應該比較不是整個字符串,但部分,因爲我認爲「華盛頓蘋果飲料」和「SUNFRESH蘋果飲料RTS 1L」是每一個str ing - 當你想根據內容的一部分比較它們時,'equals'不是正確的方法,因爲'String#equals'檢查整個字符串是否相等。 – Smutje 2015-03-03 07:43:50