티스토리 뷰
필자가 최근에 주로 포스팅하는
hackerrank challenges 포스팅에서도 알 수 있지만
필자는 값을 받아올 때 보통 for문을 많이 사용한다.
그런데 hackerrank에서도 기본 소스 코드에
Iterator를 이용해 값을 받아오는 코드가 많은데
오늘 Iterator를 쓰는 확실한 이유를 알게 되었다!!
다음의 코드를 보자.
import java.util.ArrayList;
import java.util.Iterator;
public class Iterator사용이유 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator it = list.iterator();
while (it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}
}
}
보통 컬렉션 값을 받아올 때
Iterator를 사용하여
while(it.hasNext()) 를 이용해
값을 많이 받아오는데
while문을 for문으로 바꿔보면 다음과 같이 작성할 수 있다.
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
public class Iterator사용이유 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator it = list.iterator();
// for문으로 변경
for(int i=0; i<list.size(); i++) {
Object obj = list.get(i);
System.out.println(obj);
}
}
}
근데 여기서 컬렉션을 HashSet으로 변경할 경우
다음과 같이 코드를 작성하면 문제가 발생한다.
import java.util.HashSet;
import java.util.Iterator;
public class Iterator사용이유 {
public static void main(String[] args) {
HashSet list = new HashSet() ; // Set은 Collection의 자손
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator it = list.iterator();
// for문으로 변경
for(int i=0; i<list.size(); i++) {
Object obj = list.get(i);
System.out.println(obj);
}
}
}
IDE에서 위 코드를 작성해보면 알겠지만
list.get(i)으로 값을 받아오지 못한다.
물론 while문을 통해 iterator를 사용하면
값을 잘 받아올 수 있다!!
컬렉션 프레임워크를 사용하다보면
성능 등의 이유로 컬렉션을 바꿔야 하는 경우가 생기는데
for문을 이용해서 arraylist가 가지고 있는 get()메서드를 이용해
값을 가져오게 되면
hashSet으로 컬렉션이 변경되면 코드를 수정해야 한다.
⭐⭐⭐
근데 iterator를 사용하면
list, set 상관없이 컬렉션이 바뀌어도
코드를 변경하지 않아도 된다!!
⭐⭐⭐
왜 for문으로 컬렉션을 조회하는 것보다
iterator를 사용하는게 좋은지
알게 되었다!!
앞으로 낯설더라고 for문 보다는
Iterator를 사용하여
코딩하여야 겠다!!
위 내용과 관련된 필자의 포스팅
(링크 클릭시 이동)도 참고하길 바란다.
'프로그래밍 > 자바' 카테고리의 다른 글
[자바의 정석] Ch11 25~29 Arrays란? (0) | 2022.07.06 |
---|---|
[자바의 정석] Ch 11-22 Iterator, ListIterator, Enumeration 이란? (0) | 2022.07.05 |
[자바의 정석] Ch11-15 스택과 큐(Stack & Queue)란? (0) | 2022.07.04 |
[자바의정석] ch 11-12 LinkedList - 배열의 장단점 (0) | 2022.07.04 |
[자바의 정석] Ch11-1 컬레션 프레임웍(collections framework) / Ch 11-7 ArrayList (0) | 2022.06.27 |
- Total
- Today
- Yesterday
- 소스코드
- 강의
- 해커랭크 자바 챌린지
- 해커랭크 자바
- hackerrank challenges
- 개발자
- 22 정보처리 산업기사
- 해커랭크 챌린지
- 해커랭크
- stack
- 자바의 정석
- JPA
- 22 정보처리산업기사
- ORM
- Java
- 정보처리산업기사
- LinkedList
- 챌린지
- 코드
- 백준
- 그리디
- 정보처리산업기사 공부법
- queue
- 정보처리 산업기사
- BAEKJOON
- challenges
- 자바
- 디버깅
- hackerrank
- 풀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |