박미미의 지식에서 쌓는 즐거움

[JAVA] HashMap과 keySet, EntrySet 본문

IT 공부/Java

[JAVA] HashMap과 keySet, EntrySet

낑깡좋아 2019. 9. 12. 19:40

[HashMap]

- 배열과 연결이 결합된 형태.

- hashing 기법을 사용하기 때문에 많은 양의 데이터가 저장될때 유용, 검색에 최고성능을 보인다.

- 추가/삭제/검색/접근성이 모두 뛰어나다.

- 순서가 유지되지 않는다. (순서유지가 필요하다면 LinkedHashMap을 사용한다.)




키(key) - 컬렉션 내의 키 중에서 유일해야 한다.

깂(value) - 키와 달리 데이터의 중복을 허용한다.


HashMap map = new HashMap();

map.put("castello","1234");

map.put("asdf","1111");

map.put("asdf","1234"); 


*저장

 키 (key)

 값 (value)

 castello

 1234 

 asdf

 1234 

3개의 데이터 쌍을 저장했지만 실제로는 2개만 저장. 위에 중복된 키가 있기 때문에 추가가아닌 기존 값을 덮어쓰기 때문이다. 값은 중복은 허용하지만 키는 중복이 안됨.

HashTable과 달리 값으로 null 값을 허용한다.




HashMap 안의 내용을 꺼내는데 대표적으로 3가지가 있다.

Map<String, String> map = new HashMap<String, String>();

map.put("key1", "1");

map.put("key2", "2");

map.put("key3", "3");


1. entrySet을 이용한 for문

HashMap에 저장된 Key - Value값을 엔트리(키와 값을 결합)의 형태로 Set에 저장하여 반환

Set<Entry<String, String>> entrySet = map.entrySet();

for (Entry<String, String> entry : entrySet) {

    System.out.println(String.format("키 : %s, 값 : %s", entry.getKey(), entry.getValue()));

}


2. keySet을 이용한 for문

 for (String key : map.keySet()) {

    System.out.println(String.format("키 : %s, 값 : %s", key, map.get(key)));

}


3. Iterator를 이용한 while문

 Iterator<String> keys = map.keySet().iterator();

 while (keys.hasNext()) {

    String key = keys.next();

    System.out.println(String.format("키 : %s, 값 : %s", key, map.get(key)));

}





* 출처: Java의 정석 (남궁성 저)




Comments