자바의 정석 11장 (29일차) - Iterator

728x90

Iterator

Collection의 데이터를 보다 쉽게 관리하기 편하게 만든 표준화 클래스이다.

 

Iterator의 메서드는 hasNext(), next()만 존재하기 때문에 Collection을 사용하여 객체데이터를 저장한 값을 받아서 관리하기 용이하다.

 

코드설명

1. 다형성을 이용하여 Collection의 메서드만 사용하는 ArrayList를 선언한다.

2. Collection의 add메서드를 사용하여 javaclass라는 객체 데이터를 저장한 후

3. 그 저장된 데이터값을 iterator로 저장한다.

  • 저장 시 Collection의 데이터를 받아오는 것이기 때문에, new로 선언하지 않고 참조변수인 c.Iterator()로 선언

4. 저장된 객체정보를 hasNext와 next로 데이터 끝까지 읽어온다.

  • Iterator는 일회성이기 때문에 Iterator를 재선언하여 배열의 index를 초기화시켜야 한다.

 

출력문:

강의 주제: java 중요도: 100
강의 주제: Spring 중요도: 90
강의 주제: jsp 중요도: 90

강의 주제: java 중요도: 100
강의 주제: Spring 중요도: 90
강의 주제: jsp 중요도: 90

		Collection c= new ArrayList<>();
//		다형성을 이용해 Collection의 기능만을 써서 코드의 변경을 최소화 한다
		c.add(new javaclass("java", 100));
		c.add(new javaclass("Spring", 90));
		c.add(new javaclass("jsp", 90));
		
		Iterator it = c.iterator();
//		Collection에 저장되있는 값을 iterator로 가져온다.		
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		
		System.out.println();
		it = c.iterator();
//		iterator는 값을 다 읽어오면 index의 자리가 배열의 끝으로 변경되기 때문에
//		다시 iterator를 선언하여 Collection의 객체의 값을 다시 불러와야 한다.
//		 == Iterator는 일회성!
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}
}

class javaclass{
	String LectureName;
	int importance;

	public javaclass(String lectureName, int importance) {
		LectureName = lectureName;
		this.importance = importance;
	}
	@Override
	public String toString() {
		return "강의 주제: " + LectureName + " 중요도: " + importance;
	}
}
728x90