> 컬렉션에 저장된 데이터를 접근(읽어)오는데 사용되는 인터페이스
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 |
댓글