Enumeration Thread에 안전한 구조 / vector, Hashtable에 사용 / 다음 내용이 있는지 확인하는 hasNext(), 그 값을 가져오는 next(), 해당 컬렉션의 값을 삭제하는 remove() 메서드 제공
Iterator은 Thread에 안전하지 않은 구조 / ArrayList, HashSet 에 사용 / 다음 내용이 있는지 확인하는 hasMoreElement(), 그 값을 가져오는 nextElement() 메서드 제공, 해당 컬렉션의 값을 삭제하는 메서드는 없음
장점
Iterator는 모든 컬렉션 프레임워크에 공통으로 사용 가능
컬렉션 프레임워크에서 쉽게 값을 가져오고 제거할 수 있음
2,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();
// 1번 실행 코드
// Iterator에 있는 값 꺼내기
// while(iterList.hasNext()) {
// System.out.println(iterList.next());
// }
// 1번 실행 코드 끝
// 2번 실행 코드
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 삭제된 것 확인 가능
}
// 2번 실행 코드 끝
}
1번 실행 결과
A
B
C
A
B
C
2번 실행 결과
A
Remove 테스트용
B
C
'programming study > B-Java' 카테고리의 다른 글
Hash 자료구조, hashCode()와 equals() 재정의, List/Map/Set, String/StringBuilder/StringBuffer, int/Integer (0) | 2023.04.28 |
---|---|
java 버전 별 특징 (0) | 2023.04.20 |
JVM, Garvage collection, Memory leak, Out Of Memory (0) | 2023.04.14 |
java-함수형 인터페이스 @FunctionalInterface (0) | 2022.09.16 |
Generic, Optional(java8) (0) | 2022.07.11 |