HashMap이란?
Map 인터페이스를 구현한 대표적인 Map 컬렉션
Map이란?
Key와 value으로 구성된 Entry 객체를 저장하는 구조를 가짐(key, value 모두 객체)
키는 중복 저장될 수 없지만 값은 중복 저장 가능
HashMap, HashTable, LinkedHashMap, Properties, TreeMap 등이 있다.
HashMap 특징
HashSet과 마찬가지로 hashcode()와 equals()로 동일한 키 여부를 결정한다.
기본 사용법 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package map.hashmap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class HashMapExample1 { public static void main(String[] args) { //Map 생성 Map<String, Integer> map = new HashMap(); //객체 저장 map.put("원빈", 50); map.put("장동건", 70); map.put("하하", 40); System.out.println("총 Entity 수 : " + map.size()); //객체 찾기 System.out.println("하하 : " + map.get("하하")); System.out.println(); //하나씩 처리 - ketset()이용 Set<String> keySet = map.keySet(); Iterator<String> keyIterator = keySet.iterator(); while(keyIterator.hasNext()) { String key = keyIterator.next(); Integer value = map.get(key); System.out.println(key + " : " + value ); } System.out.println(); //객체 삭제 map.remove("장동건"); System.out.println("총 Entry 수 : " + map.size()); //하나씩 처리 - entryset() 이용 Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator(); while(entryIterator.hasNext()) { Map.Entry<String, Integer> entry = entryIterator.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key + " : " + value ); } System.out.println(); //객체 전체 삭제 map.clear(); System.out.println("총 Entry 수 : " + map.size()); } } | cs |
hashcode( )와 eqauls( ) 재정의를 통한 동일한 키 삽입 예제 코드
키로 사용할 객체(hashcode() eqauls() 재정의)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class Member { private String name; private int age; /* get, set 메소드 생략 */ @Override public int hashCode() { return name.hashCode() + age; //이름과 나이가 같으면 동일한 해쉬코드 } @Override public boolean equals(Object obj) { if(obj instanceof Member) { Member member = (Member) obj; return member.getName().equals(name) && (member.getAge() == age); //이름과 나이가 같으면 true } else { return false; } } } | cs |
이름과 나이가 같은 경우 동일한 키로 판단
1 2 3 4 5 6 7 8 9 10 11 12 13 | import java.util.HashMap; import java.util.Map; import set.hashset.Member; public class HashMapExample2 { public static void main(String[] args) { Map<Member, String> map = new HashMap(); map.put(new Member("명수", 30), "골드"); //이름과 나이가 같은 Member 키로 저장 map.put(new Member("명수", 30), "골드"); System.out.println("총 Entry 수 : " + map.size()); //1개만 저장된다. } } | cs |
'자료구조' 카테고리의 다른 글
[그래프] 깊이 우선 탐색(DFS) (0) | 2017.03.10 |
---|---|
[Map] HashTable과 HashMap의 차이와 Properties (0) | 2017.03.10 |
[Set]HashSet의 특징 (1) | 2017.03.09 |
[그래프]넓이 우선 탐색(BFS) (0) | 2017.03.07 |
[그래프] 인접리스트와 인접행렬을 이용한 구현 (0) | 2017.02.26 |