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