자바에서 Iterator는
컬렉션 프레임워크(Collection Framework)에서
값을 가져오거나 삭제할 때 사용하는데
먼저 컬렉션 프레임워크는
List, Set, Map, Queue 등을 말한다
다음으로 컬렉션 프레임워크를 생성한 뒤
Iterator<데이터타입> iterator명 = 컬렉션.iterator();
이렇게 사용하게 된다
list.get(값); 이런 식으로 가져올 수 있는데
직접 꺼내올 수 없는 Set이 아니라면야
사용 이유가 있나? 뭣하러 쓰나 싶겠지만
Iterator를 사용할 시 얻는 장점은 다음과 같다
Iterator는 모든 컬렉션 프레임워크에 공통으로 사용 가능
컬렉션 프레임워크에서 쉽게 값을 가져오고 제거할 수 있음
3개의 메소드만 알면 되어서 사용하기 매우 쉽다
반면 단점은 다음과 같은데
처음부터 끝까지의 단방향 반복만 가능하고
값을 변경하거나 추가가 불가능하고
대량의 데이터를 제어할 때 속도가 느리다
이제 Iterator의 메소드를 한번 알아보자
근데 3개의 메소드를 제외하면
사용할 일이 없다
Iterator.hasNext()
- Iterator 안에 다음 값이 들어있는지 확인
들었으면 true, 안들었음 false
Iterator.next()
- iterator의 다음 값 가져오기
Iterator.remove()
- iterator에서 next() 시에 가져왔던 값을
컬렉션(List, Set, Map) 등에서 삭제
반드시 next() 후에 사용해야 함
이제 정리해 보자면
Iterator는 자바 컬렉션 프레임워크에서
(List, Set, Map, Queue 등)
값을 가져오거나 삭제할 때 공통으로 사용 가능하며
Iterator<데이터타입> iterator명 = 컬렉션.iterator();
이렇게 정의하고
while(iterator명.hasNext()) {
iterator.next();
}
이런 방식으로 주로 사용하게 된다
Iterator의 장점은
Iterator는 모든 컬렉션 프레임워크에 공통으로 사용 가능
컬렉션 프레임워크에서 쉽게 값을 가져오고 제거할 수 있음
3개의 메소드만 알면 되어서 사용하기 매우 쉽다
단점은
처음부터 끝까지의 단방향 반복만 가능하고
값을 변경하거나 추가가 불가능하고
대량의 데이터를 제어할 때 속도가 느리다
마지막으로 예제에 사용한 코드는 아래와 같다
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
HashSet<String> set = new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
HashMap<String, String> map = new HashMap<String, String>();
map.put("A", "1");
map.put("B", "2");
map.put("C", "3");
Iterator<String> iterList = list.iterator();
Iterator<String> iterSet = set.iterator();
Iterator<String> iterMap = map.keySet().iterator();
// Iterator에 있는 값 꺼내기
// while(iterList.hasNext()) {
// System.out.println(iterList.next());
// }
System.out.println(iterList.next()); // iterator 다음 값 가져오기
iterList.remove(); // next()에 나온 값을 list에서 삭제함
System.out.println("Remove 테스트용");
for(int i = 0; i<list.size(); i++) {
System.out.println(list.get(i)); // A 삭제된 것 확인 가능
}
}
'Language > Java' 카테고리의 다른 글
자바 .java와 .class 파일 차이점 정리 (1) | 2020.04.23 |
---|---|
자바 컬렉션 프레임워크가 뭔말? (0) | 2020.04.19 |
자바 StringBuffer, StringBuilder 개념부터 사용법까지 (0) | 2020.04.19 |
자바 파라미터 개념부터 예제까지 (0) | 2020.03.26 |
자바 삼항연산자 개념부터 예제까지 (0) | 2020.03.23 |
댓글