콜렉션 프레임워크

콜렉션 프레임워크(Queue, Set, List)는 그리고 Map은 배열의 한계성을 극복하기 위해 나왔다.

기본적인 사용법은 가장 최상위 인터페이스인 Collections에 구현되어 있는 것들을 모두 살펴보는 편이 좋다.

그 중에 Iterator를 살펴보자면...

Iterator

콜렉션프레임워크에서 데이터를 하나하나씩 뺴서 처리할 일이 있으면 Iterator 클래스를 사용해주는 게 좋다. 가장 최상위 인터페이스인 콜렉션 인터페이스에 그런 동작을 해주는 Iterator 라는 클래스가 구현되어 있기 때문이다.

Iterator에서 알아두어야 할 핵심 메소드는 아래 두가지이다.

hasNext();
next();
HashSet<Integer> A = new HashSet<Integer>();
A.add(1);
A.add(2);
A.add(3);

Iterator hi = A.iterator(); 
while(hi.hasNext()){
	System.out.println(hi.next());
}
  1. 데이터타입이 Iterator인 hiA의 element들이 모두 들어간다
  2. hasNext()는 hi에 element가 있는지 체크한다. 있으면 true 없으면 false
  3. hi.next()는 hi에 있는 elemet 중 하나를 꺼내서 반환하고 꺼낸 것은 지운다.
  4. 지운다는 의미는 hi에 담긴 A의 element 들이 지워진다는 이야기이지, A의 element가 지워진다는 이야기는 아니다.

질문1: Iterator hi = A.iterator(); 이해가 안감.

Collection 인터페이스에 구현되도록 되어있는 iterator()를, Set이 iterator()를 쓰면 단 한번의 메소드 실행으로 모든 element가 Iterator데이터타입의 hi로 모두 들어가는건가?

질문2: HashSet을 ArrayList로 바꾸면

HashSet을 ArrayList로 바꾸면 그대로 1,2,3이 출력된다. 둘다 Collection을 최상위 인터페이스로 가지고 있기 때문이다.
이렇게 바꾸면 Iterator hi는 어떤식으로 구성될까?
ArrayList이냐 HashMap이냐에 따라서 hi도 내부적으로 자료형식이 다르게 저장되어있을까?

Collections 정렬

키워드

  • 사용자 정의 정렬
  • Collections
  • compareTo()
profile
TIL 남기는 공간입니다

1개의 댓글

comment-user-thumbnail
2021년 2월 9일

공부해보야할거
Iterator VS for VS foreach
https://stackoverflow.com/questions/22267919/iterator-vs-for

답글 달기