programming study/B-Java
Enumeration, Iterator
gu9gu
2022. 11. 30. 00:32
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