728x90
반응형

신입시절 SI업체에서 일할 때 프로젝트 리더와의 면접 때 나왔던 질문 중 하나이다.

질문: Map의 키를 모르는데 값을 어떻게 확인할수 있는가?

답변: Iterator나 for-each문을 이용하면 키 없이도 값을 확인할 수 있다.

( 나중에 프로젝트에 참가해서 소스코드를 보니 Map에 감싸져있는 데이터를 추출해야 하는데 중계 쪽이다 보니 키를 알 수 없는 경우가 있었고 이 때문에 면접 시에 이 질문을 하지 않았었나 생각한다. )

 

◆ Iterator를 이용해  key 값을 구한 뒤 get 으로 추출


HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "값1");
map.put("key2", "값2");
map.put("key3", "값3");

Iterator keys = map.keySet().iterator();
while (keys.hasNext()) {
  System.out.println(map.get(keys.next()));
}

//결과
//값1
//값2
//값3

 

Iterator를 이용해 value 값을 바로 추출


HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "값1");
map.put("key2", "값2");
map.put("key3", "값3");

Iterator values  =  map.values().iterator();
while (values.hasNext()) {
  System.out.println(values.next());
}

//결과
//값1
//값2
//값3

 

for-each를 이용해  key 값을 구한뒤 get 으로 추출


HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "값1");
map.put("key2", "값2");
map.put("key3", "값3");

for (String key : map.keySet()) {
  System.out.println(hm .get(key));
}

//결과
//값1
//값2
//값3

 

for-each를 이용해 value 값을 바로 추출


HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "값1");
map.put("key2", "값2");
map.put("key3", "값3");

for (String value : map.values ()) {
  System.out.println(value);
}

//결과
//값1
//값2
//값3

 

◆ List와 Map의 차이


List의 경우 값만 들어있기 때문에 Iterator를 이용하면 값을 바로 추출할 수 있는 반면

Map의 경우 key, value값 두개가 존재함으로 Iterator를 이용할 때 key나 value 하나를 선택하여 추출해야 한다. 

ArrayList list = new ArrayList();
Iterator  iterator = list.Iterator();

HashMap map = new HashMap();
Iterator  iterator map.keySet().iterator();
Iterator  iterator = map.values().Iterator();

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --

 

728x90
반응형