HashMap<String, Integer> map = new HashMap<String, Integer>();
몇가지 메소드를 살펴보면
map.put("Kevin", 40); Key와 Value 입력
map.get("Kevin"); Key로 Value 얻기
map.remove("Kevin"); Key로 해당 Key와 Value 삭제
map.containsKey("Kevin"); Key값으로 존재 유무 확인
Set set = map.entrySet();
Iterator iter = set.iterator();
while(iter.hasNext()){
Map.Entry e = (Map.Entry)iter.next();//정적내부 인터페이스 Entry
System.out.println("key: " + e.getKey() + ", value: " + e.getValue());
System.out.println(e);
}
따라서 iter.hasNext()를 호출할수 있다.
그러나 문제는 바로 iter.next()를 사용할 수 없다. 방법은 Map.Entry를 사용하는 것이다.
Map.Entry e = (Map.Entry)iter.next();
Map.Entry를 API에서 찾아보면 Map인터페이스 안에 구현되어 있는 내부 정적 인터페이스이다. 즉 개체생성을 하지 않더라도 인터페이스 이름으로 접근하여 메소드를 사용할 수 있으리라. Map이라는 인터페이스만 보더라도 Hashmap이 Map인터페이스를 구현하고 있다는 것은 당연하다.
iter.next()메소드는 제네릭을 반환하는데 이 제네릭을 Map.Entry로 형변환하면 Key와 Value를 다룰 수 있는 것이다. 그리하여 e를 이용하여 getKey()와 getValue()를 사용하면 원래 map에 있는 Key와 Value를 활용할 수 있다.
댓글 없음:
댓글 쓰기