簡體   English   中英

如何從列表中刪除所有重復項

[英]How to remove all duplicates from list

目前,我正在嘗試從列表中刪除所有重復項。 但是,從我收集到的信息中,如果總金額可以被2整除,這只會刪除它們。如何編輯它,以便獲得3或5或更多的所有副本?

    if(check.size() < recipes.size()) { //check is a set, checking for copies.
        logger.warning("We found a copy of names, please change them! We will be disabling those recipes to disable errors.");
        for(int i = 0; i < recipes.size(); i++) {
            for(int j = 0; j < recipes.size(); j++) {
                if(recipes.get(i) == recipes.get(j) && i != j) {
                    logger.warning("We found copies of " + recipes.get(i));
                    recipes.remove(i);
                    recipes.remove(j);
                }
            }
        }
    }

目前,它只會從列表中刪除2個值。

另外,如果有副本,我不想保留1個副本,我希望將其全部刪除,以免日后出現錯誤。

您有多個選擇,其中之一是使用Set的實現,因為Set本質上是集合,它迫使唯一性。 另一種選擇是創建一個新列表,並使用lambda來獲取不同的元素,例如,假設您要將“配方”列表中的唯一/不同元素僅復制到新列表“ recipesUnique”,則可以執行以下操作:

ArrayList<T> recipesUnique = new ArrayList<>();
recipes.stream().distinct().forEach(recipesUnique::add);

還有更多可能的解決方案,如果您問我,如果必須使用List,則lambda是最簡單的解決方案,否則請使用Set

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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