[ HashMap ]
- Map 인터페이스를 구현한 클래스
- 객체(Object)/인스턴스(Instance)를 대신할 수 있는 자료구조이다.
- 용어
- 1) Entry : Key + Value를 합쳐서 부르는 말
- 2) Key : 데이터를 식별하는 식별자( 변수명, ex: name )
- 3) Value : 데이터 자체( 변수에 저장된 값, ex: 홍길동 )
- 특징
- 1) Key는 중복이 불가능하다. (HashSet 구조로 되어 있다.)
- 2) Value는 중복이 가능하다.
- 3) Key와 Value 모두 Generic 처리한다.
(Key의 타입과 Value의 타입을 따로따로 잡아주어야 한다는 말)
[ ex01 ]
public static void ex01() {
// Map 인터페이스 타입으로 HashMap 선언
//Map<K(Key), V(value)>
Map<String, String> dict;
// HashMap 생성
dict = new HashMap<String, String>();
// Entry 저장(Key, Value) : key와 value 를 합쳐서 entry라고 부른다.
실제 데이 터는 밸류임.
dict.put("봄", "spring"); // 봄이라는 키를 전달하면, spring이라는 밸류가 나옴.
dict.put("여름", "summer");
dict.put("가을", "autumn");
dict.put("겨울", "winter");
// Value 확인(Key를 전달한다.)
System.out.println(dict.get("봄"));
System.out.println(dict.get("여름"));
System.out.println(dict.get("가을"));
System.out.println(dict.get("겨울"));
}
[ ex02 ]
public static void ex02() {
// HashMap 선언 & 생성
// Object는 전부 저장할 수 있는 만능 타입.
Map<String, Object> person = new HashMap<String, Object>();
// Entry 저장(Key는 변수명으로, Value는 변수값으로 저장)
person.put("name", "홍길동");
person.put("age", 30);
// Entry 수정(기존의 key를 사용하면 해당 키의 Value가 수정되는 방식.
person.put("name", "제시카");
person.put("age", 40);
// Value 확인
System.out.println(person.get("name")); // 홍길동
System.out.println(person.get("age")); // 30
}
[ ex03 ]
public static void ex03() {
// HashMap 선언 & 생성
Map<String, Object> map = new HashMap();
// Entry 저장
map.put("top", 10);
map.put("bottom", 20);
map.put("left", 30);
map.put("right", 40);
// 반복자(Iterator)를 이용한 순회
// 1. Key만 모두 꺼내서 Set에 저장한다. (keySet 메소드)
// 2. Set에 반복자(Iterator)를 붙여서 Key를 하나씩 꺼낸다.
// 3. get() 메소드에 key를 전달하면 Value가 나온다.
Set<String> keySet = map.keySet();
Iterator<String> arm = keySet.iterator();
while(arm.hasNext()) {
String key = arm.next();
Object value = map.get(key);
System.out.println(key + ": " + value);
}
}
[ 메인 메소드 ]
public static void main(String[] args) {
//ex01();
//ex02();
ex03();
}