[Java] java.util 패키지 - Set 컬렉션 클래스

chael_lo·2021년 5월 20일
0

Java

목록 보기
35/52

Set 컬렉션 클래스

Set 인터페이스를 구현한 클래스를 Set 컬렉션 클래스라고 부른다.

Set 컬렉션 클래스 특징

  • 요소의 저장 순서를 유지하지 않는다.
  • 같은 요소의 중복 저장을 허용하지 않는다.

Set 컬렉션 클래스의 종류

  • HashSet
    내부적으로 HashMap 인스턴스를 이용하여 요소를 저장한다.
  • LinkedHashSet
  • TreeSet 등

Set 인스턴스 생성 방법

  1. 제네릭을 사용하지 않고 Set 인스턴스 생성하여 인스턴스를 Object 타입으로 저장한다.
    모든 클래스의 인스턴스를 Set 인스턴스에 저장 가능하다.
    저장된 인스턴스를 반환받아 사용할 경우 반드시 명시적 객체 형변환 후 사용해야 한다.
HashSet set=new HashSet();
  1. 제네릭 타입에 자료형을 전달하여 Set 인스턴스 생성한다.
    제네릭 타입으로 전달된 자료형의 인스턴스만을 Set 인스턴스에 저장 가능하다.
    저장된 인스턴스를 명시적 객체 형변환 없이 반환받아 사용한다.
HashSet<String> set=new HashSet<String>();
  1. 참조변수는 인터페이스(부모)를 이용하여 생성하는 것을 권장한다.
    인터페이스를 상속받은 모든 자식 클래스의 인스턴스 저장한다.
    클래스 간의 결합도를 낮추어 유지보수의 효율성 증가한다.
Set<String> set=new HashSet<String>();//HashSet으로 선언

Set 메서드 종류

Set.add(E element)

Set 인스턴스에 요소(Element)를 추가하는 메소드

set.add("홍길동");
//set.add(100);//제네릭 타입으로 전달된 자료형의 인스턴스가 아닌 경우 에러 발생
set.add("임꺽정");
set.add("전우치");
set.add("일지매");

Set.toString()

Set 인스턴스에 저장된 모든 요소를 문자열로 변환하여 반환하는 메소드

System.out.println(set.toString());//출력: [홍길동, 일지매, 전우치, 임꺽정]
System.out.println(set);//출력: [홍길동, 일지매, 전우치, 임꺽정]

Set.remove(E element)

Set 인스턴스에 저장된 요소를 제거하는 메소드
요소(인스턴스)의 값을 비교하여 제거한다.

set.remove("임꺽정");//set에서 임꺽정 제거

Set.size()

Set 인스턴스에 저장된 요소의 갯수를 반환하는 메소드

System.out.println(set.size());//출력: 3

Set.iterator()

Set 인스턴스에 저장된 요소를 반복 처리하기 위한 Iterator 인스턴스를 반환하는 메소드
Iterator: 자료구조 인스턴스에 대한 반복 처리 기능을 제공되는 인터페이스 - 반복지시자
Iterator.hasNext(): Iterator 인스턴스로 처리 가능한 요소의 존재 유무를 반환하는 메소드
(false : 처리 요소 미존재, true : 처리 요소 존재)

Iterator<String> iterator=set.iterator();

while(iterator.hasNext()) {
// => 현재 요소를 반환하고 다음 요소로 이동 처리
String str=iterator.next();
	System.out.print(str+" ");
}

//변형된 for 구문은 내부적으로 Iterator 인스턴스를 사용하여 반복 처리
for(String name:set) {
	System.out.print(name+" ");
}
profile
천천히 꾸준히

0개의 댓글