목록에서 중복 데이터를 제거하는 다섯 가지 방법

머리말

대부분의 경우 목록에서 중복 데이터를 제거해야합니다. 아래에서는 목록에서 중복 데이터를 제거하는 5 가지 방법을 소개합니다.

1. LinkedHashSet을 사용하여 arraylist에서 중복 데이터 삭제

LinkedHashSet은 ArrayList에서 중복 데이터를 삭제하는 가장 좋은 방법입니다. LinkedHashSet은 내부적으로 두 가지를 수행합니다.

1. 중복 데이터 삭제

2. 추가 된 데이터의 순서 유지

LinkedHashSet을 사용하여 arraylist에서 중복을 삭제하십시오. 주어진 예에서 numbersList는 정수를 포함하는 배열 목록이며, 그중 일부는 반복되는 숫자입니다.

예를 들어 1, 3 및 5입니다. LinkedHashSet에 목록을 추가 한 다음 콘텐츠를 목록에 반환합니다. 결과 arraylist에는 반복되는 정수가 없습니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
 
public class ArrayListExample
 
{
    
    
    public static void main(String[] args)
 
    {
    
    
 
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
 
        System.out.println(numbersList);
 
        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
 
        ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
 
        System.out.println(listWithoutDuplicates);
 
    }
 
}

출력 결과

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
 
[1, 2, 3, 4, 5, 6, 7, 8]

2. 목록 중복 제거를 위해 java8 새로운 기능 스트림 사용

arraylist에서 중복을 제거하려면 java 8 stream api를 사용할 수도 있습니다. Steam의 distinct () 메서드를 사용하여 객체의 equals () 메서드를 통해 비교되는 다른 데이터로 구성된 스트림을 반환합니다.

Collectors.toList ()를 사용하여 모든 영역 데이터 목록을 수집합니다.

Set을 사용하지 않고 Java의 arraylist에서 중복 항목을 제거하는 데 사용됩니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public class ArrayListExample
{
    
    
    public static void main(String[] args)
 
    {
    
    
 
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
        List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
 
        System.out.println(listWithoutDuplicates);
 
    }
 
}


출력 결과

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
 
[1, 2, 3, 4, 5, 6, 7, 8]

3. 이용 HashSet

중복 데이터를 추가 할 수없는 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 메소드 사용

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 루프

for (int i = 0; i < list.size(); i++) {
    
     
   for (int j = 0; j < list.size(); j++) {
    
     
       if(i!=j&&list.get(i)==list.get(j)) {
    
     
       list.remove(list.get(j)); 
   } 
} 

추천

출처blog.csdn.net/qq_36551991/article/details/110009535