본문 바로가기
개인공부

Iterator / ListIterator / Enumeration / Map

by 리승우 2022. 8. 17.

> 컬렉션에 저장된 데이터를 접근(읽어)오는데 사용되는 인터페이스

 

Iterator = 확인하고 읽는 용도

Enumeration = Iterator와 동일하나, 구버전임

 

Iterator사용이유 >> 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것

 

Iterator 사용예제

Iterator메소드를 호출 한뒤, Iterator 객체를 얻은 다음 메서드를 이용하면 된다.

import java.util.*;
public class ex11_5 {

	public static void main(String[] args) {
		ArrayList list = new ArrayList(); 
		//ArrayList는 List인터페이스를 구현한 것이고, List는 Collection 인터페이스의 자손이다 (다형성)
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		
		//list에서 iterator메서드를 호출하고 Iterator객체에 데이터넣음. it는 참조변수
		Iterator it = list.iterator();
		
		while(it.hasNext()) {
			// Object로 모든 객체가 매개값으로 대입될 수 있다.
			// Object가 최상위 타입이므로, 모든 객체는 Object 타입으로 자동 타입변환 될수 있기 때문이다.
			// ● Object클래스: 단순하게 모든클래스(API 또는 내가 만든 class 등)는 Object클래스의 
			// 자식클래스이다. 즉, Object클래스가 자바에서 '최상의 클래스'이다.  
			// Object클래스에는 다양한 메소드가 존재하는데, 어떤 클래스에서도 이 메소드를 호출할수있다.
			Object obj = it.next();
			System.out.println(obj);
		}
	} //main
}

출력값
1
2
3
4
5


//Object관련 참고코드
@Test
public void m1() {
	Integer v1 = 3;  // new Integer(3)  // Integer 객체 생성, 단 Object의 자식(다형성)
	System.out.println(v1 instanceof Object);  // true
	System.out.println(v1 instanceof Integer); // true
		
	// System.out.println(v1 instanceof String);  // syntax error
	// 전혀 연관성 없는 애들끼리 비교하려하면 syntax error
	}

@Test
public void m2() {
	// 생성은 자식 String이지만 대입될 때 Object 타입으로 변환
	Object o1 = "string";
		
	// o1 변수가 참조하는 객체의 타입이 Object 타입?
	System.out.println(o1 instanceof Object);  // true
		
	// o1 변수가 참조하는 객체의 타입이 String 타입?
	System.out.println(o1 instanceof String);  // true
		
	// 무관한 타입이라서 false 출력
	System.out.println(o1 instanceof Integer);  // false
	// Integer가 Object를 상속받기 때문에 이건 syntax error가 아님
	}
}

 

MAP과 Iterator

> Map에는 iterator()가 없다. (Map은 Collection의 자손이 아니다.)

> 그러니, KeySey(), entrySet(), values() 메소드를 이용한 뒤,

                 set                set            collection

iterator() 메서드를 호출하면 됨.

 

예시) 

Map map = new HashMap();

.....

Iterator it = map.entrySet().iterator();

 

위 밑줄 코드를 2줄로 분할하면 아래와 같다.

Set eset = map.entrySet();

Iterator it = eSet.iterator();

 

'개인공부' 카테고리의 다른 글

Arrays  (0) 2022.08.22
지네릭스 (Generics)  (0) 2022.08.21
스택과 큐의 활용  (0) 2022.08.16
Stack & Queue  (0) 2022.08.15
LinkedList  (0) 2022.08.15

댓글