본문 바로가기

Java

[JAVA] 자바 배열 ArrayList 중복제거 정리

자바 배열 ArrayList 중복제거 정리


1.로직을 통한 중복 제거

contains()를 사용해, list를 for문 돌면서 arrayList에 포함되어있지 않는 데이터만 arrayList에 add 한다.

contains() 함수는 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수다. 대/소문자를 구분한다.

package test;

import java.util.ArrayList;

public class test {

    public static void main(String[] args) {

        String[] list = {"중복아님", "중복", "중복"};
        ArrayList<String> arrayList = new ArrayList();

        for(String item : list){
          if(!arrayList.contains(item))
          arrayList.add(item);
        }                                     
        System.out.println(arrayList); //arrayList = [중복아님, 중복]
    }
}
package test;

import java.util.ArrayList;
import java.util.Arrays;

public class test {

	public static void main(String[] args) {		
		ArrayList<Integer> dataList = new ArrayList(Arrays.asList(1, 2, 3, 4, 5, 1));
		for (int i = 0; i < dataList.size(); i++) {
             for (int j = 0; j < dataList.size(); j++) {
                 if (i == j) {
                 } else if (dataList.get(j).equals(dataList.get(i))) {
                     dataList.remove(j);
                 }
             }
         }
		System.out.println(dataList); //dataList = [1, 2, 3, 4, 5]
	}	
}

 

2. HashSet 중복제거

HashSet은 Collection 중 Set의 대표적인 파생클래스로 기본적으로 집합으로 중복된 원소를 허용하지 않는다. 

HashSet은 순서가 보장되지 않는 자료구조이다.

package test;

import java.util.HashSet;

public class test {

    public static void main(String[] args) {

        String[] list = {"중복아님", "중복", "중복"};
        HashSet<String> hashSet = new HashSet<>();
        
        for(String item : list){
            hashSet.add(item);
        }
        System.out.println(hashSet); //hashSet = [중복아님, 중복]
    }
}

 

3. LinkedHashSet 중복제거

LinkedHashSet은 Collection 중 Set의 파생클래스로 기본적으로 집합으로 중복된 원소를 허용하지 않는다. 

LinkedHashSet은 순서가 보장되는 자료구조이다.

package test;

import java.util.LinkedHashSet;

public class test {

    public static void main(String[] args) {

        String[] list = {"중복아님", "중복", "중복"};
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
        
        for(String item : list){
            linkedHashSet.add(item);
        }
        System.out.println(linkedHashSet); //linkedHashSet = [중복아님, 중복]
    }
}

 

4. TreeSet 중복제거

TreeSet은 HashSet와 같이 중복된 원소를 허용하지 않고 순서가 보장되지 않는 자료구조이다.

차이점은 기본적으로 오름차순 정렬을 해준다. 

package test;

import java.util.TreeSet;

public class test {

    public static void main(String[] args) {

        String[] list = {"중복아님", "중복", "중복"};
        TreeSet<String> treeSet = new TreeSet<>();
        
        for(String item : list){
            treeSet.add(item);
        }
        System.out.println(treeSet); //treeSet = [중복, 중복아님]
    }
}

 

5. Lambdas 중복제거

package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class test {

	public static void main(String[] args) {
    
		ArrayList<Integer> dataList = new ArrayList(Arrays.asList(1, 2, 3, 4, 5, 1));
		List<Object> resultList = dataList.parallelStream().distinct().collect(Collectors.toList());		
		System.out.println(resultList);
	}	
}