簡體   English   中英

將陣列列表中的產品與相似產品的另一個陣列列表進行匹配

[英]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.

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