[HashSet] 중복요소 제거하기

jbong·2024년 2월 11일

JAVA

목록 보기
2/3
post-thumbnail

Prologue

필자는 HashSet을 이용하여 중복 요소를 제거하는 방법을 알아보려고 한다.


HashSet

  • Set 인터페이스에서 지원하는 구현 클래스
  • 순서대로 입력되지 않고, 일정하게 유지되지 않는게 특징
  • 이 클래스의 가장 큰 특징은 중복을 허용하지 않는다는 것이다.

HashSet은 중복을 허용하지 않고, 순서를 보장하지 않는 자료구조입니다. 따라서 중복된 값은 자동으로 제거된다.

간단한 문제를 통해 알아보자.

문제

10개의 값을 입력받고 값에 대해 42를 나머지 한 후, 나머지 값에 대해 중복이 없도록 배열의 크기를 구하라.

  1. 정적 배열 사용하기
int[] arr = new int[10];
  1. 동적 배열 ArrayList를 사용하기
ArrayList<Integer> members = new ArrayList<>();
  1. 중복된 요소 제거를 위해 HashSet을 이용하기
HashSet<Integer> hs = new HashSet<Integer><(members);
members.clear();
members.addall(hs);

전체코드

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {       
       Scanner sc = new Scanner(System.in);
       int[] arr = new int[10];
      ArrayList<Integer> members = new ArrayList<>();
       
       for(int i=0;i<arr.length;i++){
           arr[i] = sc.nextInt();
           arr[i] = arr[i] % 42;
           members.add(arr[i]);
       }
       
      HashSet<Integer> hs = new HashSet<Integer>(members);
      members.clear();
      members.addAll(hs);
           System.out.println(members.size());      
    }
}                                                      

주요 코드 설명

1. HashSet<Integer> hs = new HashSet<Integer>(members);

HashSet 객체 hs를 생성하고, members 리스트를 매개변수로 전달하여 HashSet을 초기화한다.

2. members.clear();

members 리스트를 비운다. 이는 중복을 제거한 결과를 다시 담기 위한 작업이며,

3. members.addAll(hs);

HashSet hs에 저장된 값을 다시 members 리스트에 추가한다.
이를 통해 중복이 제거된 결과를 리스트에 담게 된다.

profile
노력하는 개미

0개의 댓글