Java

[Java] 자바 ArrayList 중복 값 제거하기 (HashSet, Stream, TreeSet)

ArrayList의 중복 값을 제거하는 방법

1.ArrayList의 데이터를 contains() 메소드를 사용하여 중복 값을 제거

2.Stream의 distinct() 메소드를 사용하여 중복 값을 제거

3.HashSet, TreeSet을 사용하여 중복 값을 제거

4.Lamdas 사용

 

 

■ ArrayList의 데이터를 contains() 메소드를 사용하여 중복 값을 제거

package edu.sample;

import java.util.ArrayList;
import java.util.List;

public class DuplicateExample {

	public static void main(String[] args) { 
		ArrayList<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		arrayList.add("C");
		arrayList.add("C");
		arrayList.add("C");		
		
		List<String> resultList = new ArrayList<String>();
		for(String a : arrayList) {
			if(!resultList.contains(a)) {
				resultList.add(a);
			}
		}
		
		System.out.println("중복값 제거 후 결과값: "+ resultList.toString() );
	}

}

[출력결과]


 

■ Stream의 distinct() 메소드를 사용하여 중복 값을 제거

package edu.sample;

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

public class DuplicateExample {

	public static void main(String[] args) { 
		ArrayList<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		arrayList.add("C");
		arrayList.add("C");
		arrayList.add("C");		

		//Stream()을 사용하여 중복을 제거
		resultList = arrayList.stream().distinct().collect(Collectors.toList());
		
		System.out.println("중복값 제거 후 결과값: "+ resultList.toString() );
	}

}

[출력결과]


 

■ HashSet을 사용하여 중복 값을 제거 : HashSet은 중복값을 추가하여도 적용되지않는다. 중복값 저장 안함

package edu.sample;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

public class DuplicateExample {

	public static void main(String[] args) { 
		ArrayList<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		arrayList.add("C");
		arrayList.add("C");
		arrayList.add("C");		
		
		//HashSet를 사용하여 중복제거
		HashSet<String> duplicateData = new HashSet<String>(arrayList);
		resultList = new ArrayList<String>(duplicateData);
        
        //for문 사용하여 HashSet에 데이터 추가
        //HashSet<String> hashSet = new HashSet<>();
        //for(String item : arrayList){
        //    hashSet.add(item);
        //}
		
		System.out.println("중복값 제거 후 결과값: "+ resultList.toString() );
	}

}

[출력결과] : 기본적으로 오름차순 정렬한다.


 

■ TreeSet을 사용하여 중복 값을 제거 : TreeSet은 중복값을 추가하여도 적용되지않는다. 중복값 저장 안함

package edu.sample;

import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;

public class DuplicateExample {

	public static void main(String[] args) { 
		ArrayList<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		arrayList.add("C");
		arrayList.add("C");
		arrayList.add("C");		
		
		//TreeSet을 사용하여 중복 제거
		TreeSet<String> duplicateData = new TreeSet<String>(arrayList);
        resultList = new ArrayList<String>(duplicateData);
		
		System.out.println("중복값 제거 후 결과값: "+ resultList.toString() );
	}

}

[출력결과] : 기본적으로 오름차순 정렬한다.


■람다(Lamdas)를 사용하는 방법

package edu.sample;

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

public class ArrayListDeup {

	public static void main(String[] args) {
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		arrayList.add("C");
		arrayList.add("C");
		arrayList.add("C");	
		
		//람다 사용 (lanbdas)
		arrayList =  arrayList.parallelStream().distinct().collect(Collectors.toList());
		
		System.out.println("중복값 제거 후 결과값: "+ arrayList.toString() );

	}

}

[실행결과]

중복값 제거 후 결과값: [C, A, B]

 

 

날코딩하지말고 최대한 제공하는 라이브러리를 이용하자

Leave a Reply

error: Content is protected !!