[자료구조] HashMap은 또 먼교

군자·2024년 3월 21일

코딩테스트

목록 보기
3/10

출처

https://devlogofchris.tistory.com/41
https://devmoony.tistory.com/144


📌 Map Interface

  • 자바 맵 인터페이스는 collection 인터페이스와는 다른 저장방식을 가진다.
  • 키와 값을 하나로 저장하는 방식(key-value방식)을 사용함.

🔍 Map이란?

  • 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 key를 통해 value를 얻음.
  • key는 중복허용 X, value는 중복허용

map에 입력된 순서대로 데이터를 가져오고 싶거나,
입력된 key에 의해 sort된 데이터를 가져오고 싶을 때는 LinkedHashMap, TreeMap을 사용한다.

1. LinkedHashMap

입력된 순서대로 데이터가 출력되는 특징

2. TreeMap

입력된 key의 sort 순으로 데이터가 출력되는 특징

📌 대표적인 Map 컬렉션에 속하는 클래스

🔍 HashMap<K, V> 클래스

  • map의 성질인 key와 value를 묶어서 하나의 entry로 저장한다는 특징이 있음.
  • Hash 알고리즘을 사용하여 많은 데이터를 검색하는 데 속도가 매우 빠르다.
  • value는 null 값도 가능하고, 중복도 당연히 가능하다.

🔍 HashTable<K, V> 클래스

  • HashMap 클래스와 같은 동작을 하는 클래스
  • HashTable 클래스는 HashMap과 동일하게 map 인터페이스를 상속받는다.
  • 기존 코드와의 호환성을 위해서만 남아있으므로, Hashtable 클래스보다는 HashMap 클래스를 사용하는 것이 좋다.

🔍 TreeMap<K, V> 클래스

  • 키와 값을 한쌍으로 하는 이진 검색 트리(binary Search Tree)의 형태로 저장
  • 데이터 추가, 또는 제거같은 기본 동작이 매우 빠름.
  • 레드 블랙 트리(Red Black Tree): 이진 검색 트리의 성능을 향상시킴 ; 의 형태로 구현

📌 Map 활용

🔍 put

// 1 <String, String>
Map<String, String> map1 = new HashMap<String, String>();
map1.put("watch", "시계");
map1.put("whale", "고래");
map1.put("blog", "블로그");

// 2 <String, Integer>
Map<String, Integer> map2 = new HashMap<String, Integer>();
map2.put("one", 1);
map2.put("two", 2);
map2.put("three", 3);

// 3 <String, List<String>>
Map<String, List<String>> map3 = new HashMap<> () ;
List<String>numList = new ArrayList<String>();
numList.add("one");
numList.add("two");
numList.add("three");
map3.put("number", numList);

🔍 get

// 3 <String, List<String>>
Map<String, List<String>> map3 = new HashMap<> () ;
List<String>numList = new ArrayList<String>();
numList.add("one");
numList.add("two");
numList.add("three");
map3.put("number", numList);

// [one, two, three]
map3.get("number");

🔍 containsKey

// 1 <String, String>
Map<String, String> map1 = new HashMap<String, String>();
map1.put("watch", "시계");
map1.put("whale", "고래");
map1.put("blog", "블로그");

// 해당 키 있으면 true, 없으면 false
map1.containsKey("watch")

🔍 remove

// 해당 키 있으면 삭제하고 해당 키의 value값을 리턴함.![](https://velog.velcdn.com/images/leejuae/post/91fbc8a9-a7fb-417b-9449-e6553c00b901/image.png)

map1.remove("apple")
profile
헬로 아이엠군자. 굿투씨유

0개의 댓글