Java程序移除List中重复元素
在本文中,我们将学习如何从Java中的List中移除重复元素。我们将使用两种方法:LinkedHashSet和Stream API。首先,我们将创建一个包含重复值的列表,并使用LinkedHashSet移除它们,同时保持顺序。然后,我们将使用Stream API通过distinct()过滤掉重复项。最后,您将看到这两种方法如何工作以清理列表,同时保持原始顺序。
Java中的List
Java中的List接口,是集合框架的一部分,表示一个有序的元素集合,允许重复,并提供基于索引的访问。常见的实现包括ArrayList和LinkedList。
从List中移除重复元素
以下是从List中移除重复元素的不同方法:
- 使用LinkedHashSet(因为LinkedHashSet不允许重复元素)
- 使用Stream API的distinct()方法
使用LinkedHashSet
在这个程序中,我们使用ArrayList来存储可能包含重复的元素。LinkedHashSet类用于移除这些重复项,因为它实现了Set接口,该接口不允许重复,并且LinkedHashSet保留了元素插入的顺序,这就是我们在这里使用它的原因。最后,Demo类处理程序中的所有操作。
创建ArrayList
ArrayListlist = 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移除重复项
Setset = 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]
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP