본문 바로가기
코드프레소 체험단/Java 프로그래밍

[Java 프로그래밍 초급] Set 자료구조 컬렉션 클래스

by 의정부핵꿀밤 2022. 6. 10.
728x90

< Set 자료구조 컬렉션 클래스에 대한 이해 >

 

Set 자료구조 데이터

  • 저장되는 데이터에 순서가 없다
  • 중복되는 데이터가 저장되지 않는다

 

 

 

Set 자료구조를 위해 정의된 인터페이스

  • 여러 건의 데이터를 하나의 객체로 관리한다 => List<E> 인터페이스와 유사하다
  • 입력된 데이터에 순서가 없다
    • 입력된 데이터의 순서를 관리하지 않기 때문에 List<E>와 다르게 인덱스 개념이 없다
    • List<E> 인터페이스와는 다르게 인덱스를 이용해 데이터를 다루는 메서드가 없다
  • 입력된 데이터들의 중복을 허용하지 않는다
    • Map<K, V> 인터페이스의 Key와 유사하다
    • 데이터의 중복을 제거하기 위한 필터로 자주 사용된다

 

 

Set<E> 인터페이스에 대한 이해

  • Collection<E> 인터페이스를 상속하여 정의된 인터페이스

 

  • Collection<E> 인터페이스와 거의 동일한 메소드들이 정의된다
  • 그러나 인덱스 개념이 필요한 List<E> 인터페이스 메서드는 정의되지 않는다

 

 

 

 

대표적인 Set 자료구조의 컬렉션 클래스

  • HashSet<E> 이 가장 많이 사용되는 클래스

 

 

 

HashSet<E> 클래스에 대한 이해

  • List의 인덱스, Map의 Key처럼 저장된 데이터에 접근하기 위한 정보가 없다
    • List, Map 인터페이스에서 인덱스나 Key를 이용해 데이터에 접근하는 get 메서드가 정의되지 않는다
  • 저장된 데이터가 Hash 알고리즘을 이용해 구조화되어 있어 데이터 탐색 속도가 빠르다
  • java.util 패키지에 존재한다

 


< Set 자료구조 컬렉션 클래스의 활용 >

 

HashSet 객체 생성 문법

import java.util.HashSet;

HashSet <Type-Class> hashSet-name = new HahsSet<>();
  • import java.util.HashSet
    • HashSet 클래스를 사용하기 위해 컴파일러에 해당 Class가 존재하는 패키지 정보를 제공한다
  • HashSet
    • 생성하고자 하는 객체가 HashSet 클래스임을 지정한다
  • <Type-Class>
    • 제네릭을 이용해 HashSet 객체 내에서 데이터 타입을 지정한다
    • 데이터 타입의 Class 이름을 사용한다
  • hashSet-name
    • 생성하고자 하는 HashSet 객체의 변수명 지정

 

 

 

HashSet 객체 생성

 

 

 

HashSet<E> 객체의 데이터 추가

  • boolean add(E e)
  • boolean addAll(Collection<? extends E> c)

 

 

 

boolean add(E e)

  • 객체 생성 시 정의한 데이터 타입(<E>)을 인자로 전달하여 순서없이 추가한다
  • 수행 결과로 boolean 타입의 값을 반환한다

 

  • 데이터를 추가한 순서가 HashSet 객체에서 유지되지 않는다

 

  • 중복된 데이터의 추가가 불가하다

 

 

 

booelan addAll(Collection<? extends E> c)

  • 인자로 전달한 Collection 객체의 데이터들을 추가한다
  • HashSet 객체 생성 시 정의한 데이터 타입(<E>)을 원소로 갖는 Collection 객체여야 한다
  • 중복된 데어티는 제거하고 추가된다 - 합집합과 동일한 기능을 수행한다

 

 

 

HashSet<E> 객체의 데이터 탐색

  • boolean contains(Object o)
  • int hashCode()
  • int size()

 

 

 

boolean contains(Object o)

  • 전달 받은 데이터의 객체가 포함되어 있는지를 확인하여 boolean 타입으로 결과를 반환한다

 

 

 

int hashCode()

  • HashSet 객체 내 데이터들의 Hahs 값을 더한 값을 반환한다
  • Null 값의 경우 0으로 Hahsing 된다
  • HashSet 객체들이 동일한지를 체크할 때 사용 가능하다

 

 

 

int size()

  • 객체에 저장되어 있는 데이터의 개수를 조회한다

 

 

 

HashSet<E> 객체의 데이터 변경

  • void clear()
  • boolean remove(Object o)
  • boolean removeAll(Collections<?> c)
  • boolean retainAll(Collections<?> c)

 

 

 

void clear()

  • 객체 내 모든 데이터를 제거한다

 

 

 

boolean remove(Obejct o)

  • 전달받은 데이터를 객체에서 제거하고 수행 결과를 boolean 타입으로 반환한다

 

 

 

boolean removeAll(Collections<?> c)

  • 인자로 전달한 Collection 객체가 가지고 있는 데이터들을 모두 제거한다
  • 차집합과 동일한 기능을 수행한다

 

 

boolean retainAll(Collection<?> c)

  • 두 개의 HashSet 객체에 모두 존재하는 데이터만 선택한다
  • 교집합과 동일한 기능을 수행한다

728x90

댓글