찌니의 프로그래밍 삼매경

[java] 자바 java Iterator 본문

자바(java)

[java] 자바 java Iterator

zzI니☆ 2022. 6. 15. 15:29
728x90

 

Iterator

- 컬렉션 프레임워크에서 저장된 요소를 읽어오는 방법을 표준화하기 위한 역할(인터페이스)

- Collection의 하위 컬렉션들이 소유 -> Iterator 타입의 객체를 반환하는 메소드를 이미 구현

- List, Set계열에 구현(Map은 없음)

- 주로 읽기 전용으로 사용한다.

 

Iterator의 주요멤버

1. boolean hasNext()

2. T next()

3. remove()

 

 

ArrayList<String> list = new ArrayList<String>();

list.add("삼겹살");

list.add("항정살");

list.add("목살");

list.add("가브리살");

list.add("천겹살");

 

List에 데이터를 담고 반복을 돌리는 방법?

 

1. for 문

for( int i =0; i<list.length; i++){
	출력문(list.get(i));
}

 

2. for-each문(향상된 for문)

for( String str : list ){
	출력문( str );
}

 

3. Iterator 반복자

Iterator<String> iter = list.iterator();

while(iter.hasNext()){
	System.out.println(iter.next());
}

 

Map 계열도 반복을 돌린다??

 

- 반복을 돌린다기보다는 전체 Map계열의 키를 알면 값을 알수있음. 이런 맵계열 컬렉션의 특징을 통해 Iterator를 이용하여 반복을 돌릴수가 있다.

- keySet() 메소드를 이용. -> Map계열의 전체 키Set을 반환.

class Example{
    public static void main(String[] args){
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("one", "하나");
        map.put("two", "둘");
        map.put("three", "셋");
        map.put("four", "넷");
        map.put("five", "다섯");
        // 해쉬맵 루프 돌리기.
        // -Map계열은 순서가 없어서 루프 돌리기 힘들다.
        
        //Collection > List - Set
        Set<String> keys = map.keySet(); // 해쉬맵의 키의 집합.
        Iterator<String> iter = keys.iterator();
        while(iter.hasNext()) {
            String key = iter.next(); //*****
            System.out.printf("map.get(\"%s\")=%s\n",key,map.get(key));
        }
    }
}

 

 

 

map의 key 데이터 타입과 같은 타입으로 Set 타입 객체를 반환하여 여기에 iterator를 만들고 키값을 돌리면 된다.

class Example{
    public static void main(String[] args){
        Collection<String> value = map.values();//값의 집합.        
        iter = value.iterator();
        while(iter.hasNext()) {
            System.out.println(iter.next());
        }
    }
}

 

 

 

728x90

'자바(java)' 카테고리의 다른 글

[java] static, final, static final 차이점  (1) 2022.06.17
[java] 롬복 lombok 이란?  (0) 2022.06.16
[java] List 종류와 정리  (0) 2022.03.31
[java] Set 종류와 정리  (0) 2022.03.30
[java] Map 종류와 정리  (0) 2022.03.29
Comments