💡HashMap Class
HashMap Class는 요소에 접근할 때 키(key)를 사용하는 방식이다. 이때 방 번호가 없다는 말은 순서가 없다는 뜻이기도 하다.
여기서 key는 강의실 5개가 있다고 할 때, 햇님반, 달님반, 별님반, 화성반, 지구반 각각의 이름을 말한다. 또한 각 개별적인 키(key)에는 값(value)이 부여된다. (ex 햇님반 10명)
HashMap은 요소의 일괄 접근이 불가능해 반복문을 사용할 수 없지만, 이는 용도가 다를 뿐이지 좋고 나쁘다는 의미는 아니다.
이러한 HashMap의 특징으로 인해 요소끼리의 구분이 용이해졌다. 값을 확인하지 않더라도 식별자 key로 방의 의미를 알 수 있기 때문에 가독성이 굉장히 좋다.
HashMap 클래스의 활용
HashMap 선언하기
HashMap<String,Integer> map = new HashMap<String,Integer>();
선언문의 타입 변수가 2개인 이유는 key의 자료형, value의 자료형을 작성해 주어야 하기 때문이다.
String은 방의 이름(key)의 자료형이 되며, Integer는 데이터(value)의 자료형이 된다.
요소 추가하기
V put(K key, V value)
map.put("국어", 100);
map.put("영어", 90);
map.put("수학", 80);
put() 메소드를 사용해 데이터를 저장한다. HashMap은 데이터에 순서가 없기 때문에 인덱스를 지정하지 않는다.
요소 개수 확인하기
System.out.println(map.size()); // 3
요소 읽기
V get(K key)
System.out.println(map.get("국어")); // 100
System.out.println(map.get("영어")); // 90
System.out.println(map.get("수학")); // 80
요소를 읽을 때에는 get() 메소드를 사용하며, 방의 이름(key)에 들어 있는 데이터(value)를 출력한다.
요소 수정하기
V put(K key, V value)
map.put("국어", 95);
System.out.println(map.get("국어")); // 95
앞서 key는 유일하다고 했다!
요소를 추가할 때 사용했던 put() 메소드를 사용하고 있지만, 이미 국어라는 key를 가지고 있기 때문에 추가가 아니라 데이터 수정을 하게 된다.
요소 검색하기
boolean containsKey(K key)
boolean containsValue(V value)
System.out.println(map.containsKey("국어")); // true
System.out.println(map.containsKey("과학")); // false
System.out.println(map.containsValue(90)); // true
System.out.println(map.containsValue(100)); // false
HashMap에서 요소를 검색하는 방법은 containsKey() 메소드, containsValue() 메소드 두 가지가 있다.
containsKey는 배열의 Key에서 국어 점수를 받은 게 있는지, 과학 점수를 받은 게 있는지를 물어볼 때 사용할하며, containsValue는 배열의 Value에서 90점 맞은 게 있는지, 100점 맞은 게 있는지를 물어볼 때 사용한다.
요소 삭제하기
map.remove("국어");
System.out.println(map.size()); // 2
System.out.println(map.get("국어")); // null
요소를 삭제할 때에는 remove() 메소드를 사용한다.
key가 삭제되면 key에 들어있던 데이터도 함께 소멸한다.
요소 초기화하기
map.clear();
clear() 메소드를 사용하면 배열에 생성된 데이터를 초기화한다.