1. 程式人生 > 程式設計 >java中List去除重複資料的5種方式總結

java中List去除重複資料的5種方式總結

前言

List 是一個介面,它繼承於Collection的介面。它代表著有序的佇列。當我們討論List的時候,一般都和Set作比較。

List中元素可以重複,並且是有序的(這裡的有序指的是按照放入的順序進行儲存。如按照順序把1,2,3存入List,那麼,從List中遍歷出來的順序也是1,2,3)。

Set中的元素不可以重複,並且是無序的(從set中遍歷出來的資料和放入順序沒有關係)。

以下介紹五種-不同的方法去除 Java 中ArrayList中的重複資料

1.使用LinkedHashSet刪除arraylist中的重複資料

LinkedHashSet是在一個ArrayList刪除重複資料的最佳方法。LinkedHashSet在內部完成兩件事:

  • 刪除重複資料
  • 保持新增到其中的資料的順序

Java示例使用LinkedHashSet刪除arraylist中的重複項。在給定的示例中,numbersList是包含整數的arraylist,其中一些是重複的數字,例如1,3和5.我們將列表新增到LinkedHashSet,然後將內容返回到列表中。結果arraylist沒有重複的整數。

 
publicstaticvoidmain(String[] args){
 int List[] =[1,1,2,3,4,5,6,7,8]
LinkedHashSet<Integer> hashSet =newLinkedHashSet<>(List);
ArrayList<Integer> listWithoutDuplicates =newArrayList<>(hashSet);
System.out.println(listWithoutDuplicates);
 
}
 

輸出結果

[1,8]

2.使用java8新特性stream進行List去重

要從arraylist中刪除重複項,我們也可以使用java 8 stream api。使用steam的distinct()方法返回一個由不同資料組成的流,通過物件的equals()方法進行比較。

收集所有區域資料List使用Collectors.toList() 。

Java程式,用於在不使用Set的情況下從java中的arraylist中刪除重複項。

publicstaticvoidmain(String[] args){
 int List[] =[1,8]
List<Integer> listWithoutDuplicates = List.stream().distinct().collect(Collectors.toList());
System.out.println(listWithoutDuplicates);
}
 

輸出結果

[1,8]

3.利用HashSet不能新增重複資料的特性 由於HashSet不能保證新增順序,所以只能作為判斷條件保證順序:

private static void removeDuplicate(List<String> list) {
  HashSet<String> set = new HashSet<String>(list.size());
  List<String> result = new ArrayList<String>(list.size());
  for (String str : list) {
    if (set.add(str)) {
      result.add(str);
    }
  }
  list.clear();
  list.addAll(result);
}

4.利用List的contains方法迴圈遍歷,重新排序,只新增一次資料,避免重複:

private static void removeDuplicate(List<String> list) {
  List<String> result = new ArrayList<String>(list.size());
  for (String str : list) {
    if (!result.contains(str)) {
      result.add(str);
    }
  }
  list.clear();
  list.addAll(result);
}

5.雙重for迴圈去重

 
public static void main(String[] args) {
	int List[] = [1,8]
	for (int i = 0; i < List.size(); i++) {
		for (int j = i + 1; j < List.size(); j++) {
			if (List.get(i) == List.get(j)) {
				List.remove(j);
				j--;
			}
		}
	}
}

總結

到此這篇關於java中List去除重複資料的5種方式的文章就介紹到這了,更多相關java List去除重複資料內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!