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 |