2016년 7월 25일 월요일

Java Programming [47강] 두가지 자료형을 담는 가방 : Entry< , > : Entry를 활용해 HashMap안의 key와 value에 접근하기

오늘 주제는 Entry< , >입니다.
자바에서 entry라는 단어는 "전체"라는 의미로 생각하시면 됩니다.
HashMap< , >구조의 가방에는 두가지 데이터 형이 쌍으로 하나의 요소로 들어갑니다.
오늘은 Entry< , >를 활용해 HashMap에서 요소를 가져오는 방식을 설명하겠습니다. 

이전 시간에도 다뤘지만 Entry< , >를 쓰지 않는다면 HashMap<>안의 key만 뽑아서 Set구조로 새로운 가방을 만들고 iterator를 통해 하나씩 key를 가져와 get(key)로 value를 가져오는 방법을 취할 수 있습니다.
다음의 방법이 Entry< , >를 쓰지 않고 HashMap의 요소를 가져오는 방법입니다.

이 방식은 key줄게 value다오 방식이라고 말할 수 있겠습니다.
그런데 key와 value를 한꺼번에 가져와야 할 때는 어떻게 해야 할까요?
다음의 방식이 Entry< , >을 사용해 HashMap의 쌍으로 존재하는 key와 value를 가져오는 방식입니다.

29행에서 mapLogin.entrySet()으로 mapLogin안에 쌍구조로 존재하는 key와 value를 String, String 의 두 자료형을 요소로 담는 Set구조 set이라는 가방에 담습니다.
바로 여기서 Entry가 등장합니다. Entry는 이처럼 두개의 데이터가 쌍으로 존재할 때 두 자료형을 묶는 자료형입니다. 새로운 유형의 자료형이라고 생각하면 됩니다. 여기서는 String과 String의 두 자료형이 Entry로 묶여 Set의 generic으로 들어갑니다. 즉, Set이라는 자료구조의 set가방에는 Entry 자료형의 요소만이 들어올 수 있고 mapLogin.setEntry();를 통해 mapLogin안의 key-value요소를 가져와 set에 넣어줍니다.
그런 후 iterator또한 제네릭을 entry로 설정해주고 set.iterator()로 등록합니다.
while문 안에서 iter.next()로 하나씩 가져오는 데이터는 모두 Entry<String, String> 자료형입니다. 때문에 temp의 자료형도 Entry<String, String>으로 선언해줍니다.
그리고 가져온 temp를 토대로 temp.getKey(), temp.getValue()를 통해 key와 value데이터에 각각 접근합니다. 

댓글 없음:

댓글 쓰기