JAVA

[Java] HashMap<K,V>

빙하둘리 2022. 12. 23. 21:34
728x90

Map을 대상으로는 반복자를 못 얻어

 

 

우리는 List를 구현한 Collection 인스턴스와 Set을 구현한 Collection 인스턴스를 안다.

Key는 중복을 허용하지 않으니 Set에 어울린다. Set은 집합의 성격을 가진다.(Set 또한 중복 비허용)

순차적 접근 필요 시 어떻게 해?

 

일단 Key값을 모아서 전달해주는데, Set에다가 담는게 유용

Set을 구현하고 있고 Key만 담고 있는 컬렉션 인스턴스를 반환해주는 함수를 map에다가 만든다. 그게 바로

Set <Integer> ks = map.keySet();

Set 안에는 Key들이 저장되어 있다.

Map이 반환해준 Key가 Set 인터페이스를 구현해서,

Set 위에 컬렉션, 컬렉션이 Iterable 인터페이스를 상속하므로

Set을 구현한 컬렉션 인스턴스라고 하면 iterable 메서드 호출을 통해서 반복자를 얻을 수 있다. ->순차적으로 Key 값을 얻을 수 있다.

 

 

HashMap 인스턴스를 대상으로 keySet 메서드를 호출하면 HashMap이 가지고 있는 모든 Key를 모아서 Collection 인스턴스스를 하나 생성해서 모은 다음에 반환 값을 주는 데, 반환형이 Set이다.

 

예제를 다시 보면,

 

트리맵

Key를 기준으로 정렬해가면서 저장

출력도 정렬된 기준으로 나온다.

728x90