데이터의 집합을 이루는 자료구조에 반복적인 수행을 통해서 값을 읽는 작업을 할 때 쓰이는 것이 바로 Java Iterator 입니다.
보통 Java에서 많이 쓰이는 자료구조는 List, Map인데요. 이 각각의 구조는 데이터의 매핑과 구조가 달라 데이터를 읽는데 고유의 코드를 부여하여 사용해야 합니다.
하지만 이 Iterator를 사용하면 Collection에 포함되어 있는 목록, 리스트, 집합을 가지는 자료구조에서 손쉽게 값을 추출해 낼 수 있습니다.
Java Iterator 란?
사전적 의미로는 반복자를 뜻하며 반복적인 역할을 수행한다.
반복적인 역할은 데이터가 집합되어 있는 자료구조에서 데이터를 추출하는 데에 사용됩니다.
Iterator 장점
보통 List, Map, Set등의 데이터 구조는 데이터의 할당이나 읽기 등을 수행할 때 각각 가지고 있는 고유 Read 기능을 이용해야 합니다.
그러나 각각 가지고 있는 고유 메소드나 사용법이 다르다 보니 메소드의 사용이나 규격등이 획일화 되어 있지 않다는 단점과 불편함이 있습니다.
그러나 Iterator를 사용하면 고유 문법을 사용하지 않고 Iterator 고유의 공통 문법을 사용하여 간단하게 처리할 수 있습니다.(범용성)
위의 그림은 Iterator에서 사용할 수 있는 메소드이며
사용법은 아래와 같습니다.
- hasNext : 반복해서 값을 추출할 때 사용하며 반복자가 다음 값을 가지고 있다면 true 없으면 false를 리턴합니다. while 문과 같이 써서 반복문을 구성할 수 있습니다.
- next : 반복자 안의 값을 리턴합니다.
- remove : 값을 삭제함.
Iterator 예제 소스
Map<String, String> map = new HashMap<String, String>();
map.put("1", "일");
map.put("2", "이");
map.put("3", "삼");
Iterator itr = list.iterator();
while(itr.hasNext()) {
System.out.println("값이 있나? : "+itr.hasNext());
String it_txt = itr.next();
if(it_txt.equals("2")) {
itr.remove();
System.out.println(it_txt+"는 삭제됨");
}else {
System.out.println("현재 값 : "+it_txt);
}
}
System.out.println("최종 값 : "+map);
예제 소스 설명
위의 예제 소스코드에서 map를 사용하였지만 collection 에서 사용하는 모든 자료구조는 사용이 가능합니다.
map을 선언 뒤에 데이터를 담고 iterator를 통해서 값을 추출해 내는 소스 인데요. while을 사용하여 값이 false가 될때까지 로직이 반복됩니다.
hasNext가 값이 있으면 true, 없으면 false이니 iterator에 담긴 값이 없을 때까지 반복문 안의 로직이 수행됩니다.
그리고 반복문 안에 next를 이용하여 값을 String 변수에 담고 이 값이 2일 경우 remove가 수행되에 map에서 해당 값을 지우게 됩니다.
2가 아닌 경우는 현재값을 console에 출력하고 반복문이 끝나면 map 데이터를 출력하게 됩니다.
답글 남기기