Java程式移除List中重複元素


在本文中,我們將學習如何從Java中的List中移除重複元素。我們將使用兩種方法:LinkedHashSetStream API。首先,我們將建立一個包含重複值的列表,並使用LinkedHashSet移除它們,同時保持順序。然後,我們將使用Stream API透過distinct()過濾掉重複項。最後,您將看到這兩種方法如何工作以清理列表,同時保持原始順序。

Java中的List

Java中的List介面,是集合框架的一部分,表示一個有序的元素集合,允許重複,並提供基於索引的訪問。常見的實現包括ArrayListLinkedList

從List中移除重複元素

以下是從List中移除重複元素的不同方法:

使用LinkedHashSet

在這個程式中,我們使用ArrayList來儲存可能包含重複的元素。LinkedHashSet類用於移除這些重複項,因為它實現了Set介面,該介面不允許重複,並且LinkedHashSet保留了元素插入的順序,這就是我們在這裡使用它的原因。最後,Demo類處理程式中的所有操作。

建立ArrayList

ArrayList list = new ArrayList();
list.add("Jacob");
list.add("Gary");
list.add("Gary");
list.add("Harry");
list.add("Harry");
list.add("Kevin");
System.out.println("List = " + list);

建立了一個名為list的ArrayList來儲存字串集合。我們將使用.add()方法:

使用.add()方法將元素如“Jacob”、“Gary”、“Harry”和“Kevin”插入到列表中。故意添加了重複元素如“Gary”和“Harry”來演示ArrayList中如何存在重複項。

使用LinkedHashSet移除重複項

Set set = new LinkedHashSet(list);
System.out.println("List after removing duplicate elements = " + set);

在上面的程式碼中,我們使用LinkedHashSet,因為LinkedHashSet不允許重複值,這有效地從列表中移除了重複項。它保留元素的插入順序,並在移除重複項後列印修改後的列表。

示例

以下是使用LinkedHashSet從List中移除重複元素的Java程式演示:

// Importing Classes  
import java.util.ArrayList;  
import java.util.LinkedHashSet;  
import java.util.Set;  

// Declaring the Class and Main Method  
public class Demo {  
   public static void main(String[] args) {  

      //Create and fill the List  
      ArrayList<String> list = new ArrayList<String>();  
      list.add("Jacob");  
      list.add("Gary");  
      list.add("Gary");  
      list.add("Harry");  
      list.add("Harry");  
      list.add("Kevin");  
      System.out.println("Original List (Section 3): " + list);  

      //Remove Duplicates Using LinkedHashSet  
      Set<String> set = new LinkedHashSet<String>(list);  
      System.out.println("List After Removing Duplicates (Section 4): " + set);  
   }  
}  

輸出

List = [Jacob, Gary, Gary, Harry, Harry, Kevin]
List after removing duplicate elements = [Jacob, Gary, Harry, Kevin]

使用Stream API的distinct()方法

在這個程式中,我們使用多個類來操作和處理元素列表。ArrayList類用於建立可以儲存元素(包括重複元素)的列表。Arrays類幫助我們使用asList()方法快速將值陣列轉換為列表。

我們使用List介面來定義集合的型別,因為它提供了處理列表(如新增和訪問元素)的必要方法。Collectors類在最後用於將流轉換回列表,使用toList()方法,該方法在移除重複項後收集唯一的元素。

建立和填充List

使用Arrays.asList()建立了一個ArrayList並填充了元素。故意添加了重複元素如“Ryan”和“Mark”來展示如何處理重複項,並列印原始列表以顯示重複項。

 // Create and fill the List  
      List<String> list = new ArrayList<String>(Arrays.asList("Ryan", "Kevin", "Ryan", "Harry", "Mark", "Mark"));  
      System.out.println("Original List (Section 3): " + list);  
;

使用Stream API移除重複項

我們將使用Stream API來處理列表並從中移除重複元素。我們在這裡使用的方法是

我們將使用stream()方法將列表轉換為元素流,並從流中移除重複值,只保留唯一值,我們將使用distinct()方法。為了將唯一元素收集回列表,我們有collect(Collectors.toList())

List<String> distinctList = list.stream()  
         .distinct()  
         .collect(Collectors.toList());  
      System.out.println("Updated List Without Duplicates (Section 4): " + distinctList); 

示例

以下是使用Stream API從List中移除重複元素的Java程式演示:

//Importing the Classes  
import java.util.ArrayList;  
import java.util.Arrays;  
import java.util.List;  
import java.util.stream.Collectors;  

// Declaring the Class and Main Method  
public class Demo {  
   public static void main(String[] args) {  

      // Create and fill the List  
      List<String> list = new ArrayList<String>(Arrays.asList("Ryan", "Kevin", "Ryan", "Harry", "Mark", "Mark"));  
      System.out.println("Original List (Section 3): " + list);  

      // Remove Duplicates Using Stream API  
      List<String> distinctList = list.stream()  
         .distinct()  
         .collect(Collectors.toList());  
      System.out.println("Updated List Without Duplicates (Section 4): " + distinctList);  
   }  
}  

輸出

ArrayList = [Ryan, Kevin, Ryan, Harry, Mark, Mark]
Updated ArrayList without duplicates = [Ryan, Kevin, Harry, Mark]

更新於:2024年11月23日

587 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

立即開始
廣告