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]