[Java] Set interface를 구현한 클래스

Hyo Kyun Lee·2022년 2월 2일
0

Java

목록 보기
33/66

1. set 자료구조

set 자료구조 자체는 중복없고 순서가 없이 자료를 담는 구조이다.

  • 다만 set 자체는 인터페이스이기 때문에 객체생성이 불가능하고, set 자료구조를 활용한 HashSet과 같은 별도의 객체를 생성해야 메소드 사용이 가능하다.
  • set 자료구조는 인터페이스 자체가 임의의 클래스로 구성되어있고, 활용간 구체화하는 형태로 generic을 활용하는 가장 대표적인 구조이자 인터페이스 중 하나이다.

2. set을 통한 데이터 저장 및 추출

아래와 같이 set interface를 선언하는데, 이때 활용할 자료구조는 HashSet()이다.

public class set{
	public static void main(String[] args){
    	Set<String> set = new HashSet<>;
        //이후 HashSet 자료구조에 활용되는 형태는 문자열만 가능하다.
        
        set.add("Hello");
        //공간 하나 사용하여 데이터 삽입
        System.out.println(set);
    	//Hello 출력
    }
}

위에서 선언 및 데이터가 저장된 set 자료구조에서 데이터를 추출해내기 위해 iterator 인터페이스의 Next() 메소드를 활용해야 한다.

  • set 자료구조의 부모 클래스인 Collection의 iterator 인터페이스를 활용한다.
  • set 자료구조의 iterator()를 통해 메소드를 사용하기 위한 iterator 객체를 생성하고, 이때 Iterator는 인터페이스로 generic을 통해 반환할 type을 지정해준다.
  • 결론적으로 Iterator 인터페이스를 생성한 참조변수인 iter은, set 자료구조에서 iterator() 메소드를 활용하여 생성한 객체를 참조한다.
Iterator<String> iter = set.iterator();
//set자료구조를 Collection에서의 iterator() 메소드 사용을 통해 iter 객체 생성
//이 iter 객체는 결과적으로 set 자료구조를 참조한다.

while(iter.hasNext()){
	String str = iter.Next();
    //추출 후 다음 자료를 참조
    System.out.println(str);
}

※ 참고로 iter 객체는 set 자료구조의 데이터를 추출하고, 다음 데이터를 참조하게 되며 queue와 같은 FIFO 형태로 데이터를 추출하고 참조한다.

3. foreach 문을 활용한 데이터 추출

foreach 문을 활용해서도 데이터를 추출할 수 있다.

import java.util.*;

public class SetExam{
    public static void main(String[] args){
        Set<String> set = new HashSet<String>();
        set.add("a");
        set.add("a");
        set.add("b");
        
        System.out.println("set의 내용을 출력합니다.");
        for(String str : set){
            System.out.println(str);
        }
    }
}

//출력결과 a b

0개의 댓글