[英]Matching Products in an Array list against another Array list for similar products
我有兩個數組列表。 一個陣列列表包含外國食品,而另一個陣列列表包含本地食品。
包含外國產品的數組列表:captureForeginProduct
captureForeginProduct數組列表的樣本數據
烏木大蒜
告訴故事大象大蒜
高頂大蒜
卡靈頓檸檬冰棍
包含本地產品的數組列表:capturedLocalProducts
NOAS蒜蓉味100g
SMAK蒜香100克
中投辣椒蒜蓉醬400g
KIST檸檬和薄荷花蜜1L
我想列出與國外產品匹配的本地產品。
我使用以下代碼來獲取輸出。
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())) {
log.debug("Matching .. : " + "\t" + capturedForeginProduct.get(i) + "\t" + capturedLocalProducts.get(j));
firstForeignProducts.add(capturedForeginProduct.get(i));
firstLocalProducts.add(capturedLocalProducts.get(j));
}
else {
}
}
}
這是我想做的...
烏木大蒜應匹配NOAS大蒜Murukku 100克
告訴故事大象大蒜應匹配SMAK大蒜叮咬100克
還有另一種方法可以實現這個目標嗎? 接受任何算法。
您可以創建兩個包含此信息的枚舉,為與它們受尊敬的食物相關的那些序數值,然后為每個枚舉創建並遍歷ArrayList並匹配信息。
您要查找所有包含至少一個外國產品中也包含單詞的本地產品。 與其遍歷乘積和單詞(O(n ^ 2 * length ^ 2))的每種可能組合,而不是將外國產品中使用的每個單詞收集到HashSet
,然后針對每個本地產品檢查集合中是否包含任何單詞在本地產品中。
請注意,您檢查匹配的方法不正確:它通過兩種不同的方法,忽略大小寫檢查描述是否完全相等; 您必須改為使用String.split(" ")
來獲取產品中的單詞,然后遍歷單詞以檢查是否匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.