Set, Iterator

장원재·2024년 2월 15일
0

java

목록 보기
4/19

이번 포스팅에서는 컬랙션을 사용할때 가끔 등장하는 Iterator에 대해서 정리하고자 합니다. Iterator 는 주로 Set 컬랙션과 함께 set 의 데이터를 모두 확인하고자 할때 사용합니다. List 컬랙션은 인덱스를 통해서 접근이 가능하여 Iterator의 도움이 필요 없지만, set은 불가능하기 때문에 Iterator를 사용해야 합니다. Set은 단어 그대로 해석하면 집합이라는 뜻입니다. 즉, 중복을 허용하지 않는 데이터 저장소 이지만 순서가 없는 특징을 가집니다. 따라서 Set에 모든 데이터에 대해서 접근하기 위해서는 Iterator를 사용한다고 이해하시면 될 것 같습니다.


사용법은 코드로 알아보겠습니다.

public static void main(String[] args) {

        Set<String> set = new HashSet<>();
        set.add("111");
        set.add("222");
        set.add("333");

        Iterator<String> it = set.iterator();
        //it => [bof, 111, 222, 333, eof]
        while (it.hasNext()) {

            System.out.println(it.next());
        }
    }
  • 이들을 순차적으로 접근하기 위해서는 Iterator 가 필요한데, 간단하게 Iterator<Wrapper Class> it = 집합컬랙션.iterator(); 를 사용하면 됩니다.

  • 위의 set 에서는 [111, 222, 333] 데이터가 저장되어 있습니다.

  • Iterator 는 hasNext 와 Next 를 활용해서 사용합니다.

    • hasNext: 다음 위치에 값이 있으면 true, 없으면 false를 반환
    • next: 다음 위치로 이동 후 값을 얻어옴

위의 데이터를 가지고 예시를 들어보겠습니다. Iterator<String> it = set.iterator(); 를 하는 순간 it 의 구조는 [bof, 111, 222, 333, eof] 로 이루어집니다. bof는 데이터의 시작을 eof는 데이터의 끝을 가르킵니다.

  • 초기에 it는 bof에 위치하며 it.hasNext()를 호출하면 다음 데이터가 있는지 확인합니다. bof 다음에 111 이라는 데이터가 존재하기 때문에 true를 반환합니다.

  • 그리고 it.next()를 호출하면 it가 bof 에서 111로 자리를 이동하게 됩니다.

참고로 Wrapper class 에 대해서 생소하신 분들은 아래의 사진을 확인해주시면 될 것 같습니다 :)

profile
데이터 분석에 관심있는 백앤드 개발자 지망생입니다

0개의 댓글

관련 채용 정보