簡體   English   中英

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

[英]How to remove all duplicates from a list

我試圖從列表中刪除所有重復的元素,而不使用 set 並且元素應該保持有序。

我的代碼無法正常工作,我認為 for 循環中存在一些問題,因為它並沒有四處走動。

任何建議都會有所幫助。

代碼:

public class DuplicatesCheck {

    public static void main(String[] args) {
          System.out.println("Enter elements:");
          Scanner scan = new Scanner(System.in);
          String input = scan.nextLine();
          List<String> elements = new ArrayList<String>(Arrays.asList(input.split(",")));
          List<String> elements2 = new ArrayList<String>();
          elements2 = elements;

         for(int i = 0; I < elements.size() - 1 ; i++ ) {
             for(int j = i + 1; j < elements.size(); j++) {             
                if(elements.get(i).equals(elements.get(j))) {                           
                    elements2.remove(j);                     
                }
             }
         }
         System.out.println(elements2);
    }
}

最簡單的方法也是使用來自 stream API 的 distinct()

List<String> distinct = elements.stream()
    .distinct()
    .collect(Collectors.toList())

不要與索引交互。 因為一旦刪除一個元素,elements.size() 就會減 1。所以 j++ 將跳過一個元素。 因此,僅在未刪除時才使用 foreach 或增量 j 進行迭代。 如果刪除您的 j 僅指向下一個元素。 因為當一個元素從列表中移除時,剩余元素向左移動。

希望有所幫助。 如果您需要,我可以發布完整的解決方案。

我正在嘗試從列表中刪除所有重復的元素,而不使用集合,並且元素應該保持有序。

我的代碼無法正常工作,我認為 for 循環有一些東西,因為它並沒有四處走動。

任何建議都會有所幫助。

代碼:

public class DuplicatesCheck {

    public static void main(String[] args) {
          System.out.println("Enter elements:");
          Scanner scan = new Scanner(System.in);
          String input = scan.nextLine();
          List<String> elements = new ArrayList<String>(Arrays.asList(input.split(",")));
          List<String> elements2 = new ArrayList<String>();
          elements2 = elements;

         for(int i = 0; I < elements.size() - 1 ; i++ ) {
             for(int j = i + 1; j < elements.size(); j++) {             
                if(elements.get(i).equals(elements.get(j))) {                           
                    elements2.remove(j);                     
                }
             }
         }
         System.out.println(elements2);
    }
}

暫無
暫無

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

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