Java
HashMap 안의 HashMap
Lea_rlo
2022. 4. 12. 03:33
//외부 HashMap
HashMap mainMap = new HashMap();
//내부 HashMap 초기화 null
HashMap<String, Integer> subMap = null;
//mainMap에 String과 HashMap 저장
mainMap.put("가족", new HashMap());
//mainMap에서 key '가족'으로 value를 얻으면 HashMap
//mainMap이 참조하는 HashMap을 subMap이 참조함
subMap = (HashMap)mainMap.get("가족");
//subMap에서 값을 저장함
subMap.put("김두부", 28);
subMap.put("김숭늉", 24);
subMap.put("김벚꽃", 16);
//mainMap의 사이즈는 1
System.out.println(mainMap.size());
//mainMap의 key로 접근하여 subMap에 접근하기 위한 코드
Set set = mainMap.entrySet(); // entrySet() : 키와 값을 엔트리 형태로 Set에 저장하여 반환함
Iterator iterator = set.iterator(); //Collection의 데이터에 접근하기 위해 Iterator 생성
while (iterator.hasNext()) { //Iterator 즉, 데이터가 있을 때까지 반복
//next() : 다음 요소를 읽어온다.
//Object를 반환하기 때문에 Map.Entry(Map인터페이스의 내부 인터페이스)로 변환
//Entry는 키와 값을 한 쌍으로 가지고 있어서 HashMap처럼 키와 값의 데이터를 가져올 수 있음
Map.Entry me = (Map.Entry)iterator.next();
//Map.Entry -> getValue() : 그 값을 얻어냄 그 값은 subMap이지만 Object를 반환함
//HashMap으로 변환한다. entrySet()메소드로 Set!
Set subSet = ((HashMap) me.getValue()).entrySet();
//subMap의 데이터에 접근하기 위해서 Iterator의 객체를 사용함
Iterator subIterator = subSet.iterator();
//subIterator가 데이터를 읽어올 수 있을 때까지 반복
while (subIterator.hasNext()) {
//next() : 다음 요소를 읽어온다.
//Object로 반환하기 때문에 Map.Entry(Map인터페이스의 내부 인터페이스)로 변환
Map.Entry subMe = (Map.Entry)subIterator.next();
//subMe의 참조변수로 Entry의 키와 값을 출력함
System.out.println(subMe.getKey());
System.out.println(subMe.getValue());
}
}