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 次浏览

开启您的职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.