Map에 저장되는 데이터는 'key-value' pair 형식을 가지고 있습니다.
이는 '주민등록번호-사람이름' 관계와 비슷하다고 보면 됩니다.
우선, HashMap과 HashTable에 대해 알아보겠습니다.
checkHashMap()을 보면
map1이라는 객체를 만들고,
put()메소드를 이용해 key-value 를 집어넣었습니다.
get()메소드를 이용해 key에 해당하는 value값도 출력하고 있습니다.
해당 key가 없을 때는 null이 리턴됩니다.
"b"-"B" 데이터가 이미 있는데, 새로 "b"-"BitCoin" 데이터를 넣으니 key가 같으니 value 값은 덮어쓰기가 됩니다.
keySet() 메소드는 해당 Map에 key들만 모아 Set으로 리턴합니다.
values() 메소드는 해당 Map에 value들만 모아 Collection으로 리턴합니다.
이번엔 HashMap 객체로 map을 만들어봤습니다.
entrySet()이라는 메소드는 출력결과에서 볼 수 있듯이
해당 객체의 데이터를 entrySet element로 가지는 Set을 리턴합니다.
Map.Entry 타입은 getKey()와 getValue()를 통해
key와 value값을 리턴받을 수 있습니다.
또한 containsKey()와 containsValue()를 이용해
해당 값이 map 객체 안에 있는지 확인하고 있습니다.
해당 값이 있으면 true, 없으면 false를 리턴합니다.
remove()와 size() 메소드에 대한 예제입니다.
remove()를 하면 해당 key에 해당하는 key-value 데이터가 삭제됩니다.
삭제하고 나서 size()메소드를 통해 map객체의 크기를 살펴보면,
저장된 데이터가 없기 때문에, 0이 리턴되는 것을 볼 수 있습니다.
HaspMap은 데이터의 정렬이라는게 없습니다.
그런데 개발하다보면 데이터의 key를 기준으로 정렬할 경우가 생기는데,
이 때 유용하게 쓸 수 있는게 TreeMap 클래스입니다.
참고로 정렬 기준은 "숫자 > 알파벳 대문자 > 알파벳 소문자 > 한글" 입니다.
map에 데이터를 무작위로 넣었지만, key 값을 기준으로
정렬되어 출력되는 걸 확인 가능.
참고로 TreeMap은 순서가 중요한 클래스이므로, 순서와 관련된 메소드들이 있습니다.
firstKey(), lastKey(), higherKey(), lowerKey() 예제.