Map, HashMap

박은빈·2022년 10월 6일
0

자바

목록 보기
7/25

Map이란

키와 값으로 이루어진 데이터 구조이다

키, 값이 존재하기때문에 대응관계를 쉽게 표현할수있다

ex) 이름 = 박은빈

Map은 List처럼 순차적으로 들어가지않고 key를 통해 value를 얻는다

이러한 장점덕분에 Map은 get(hashMap들, EnumMap)에서 시간복잡도가 1이다

HashMap

map중에서도 제일 자주 쓰이는 hashMap이다

이 hashMap은 키, 값으로 이루어져있고 각 키와 값의 진짜위치는 해시함수를 통해 정하기때문에 알 수 없다

선언

HashMap<String, Integer> = new HashMap<>();
HashMap<String, Integer> = new HashMap<>(map); //map의 값을 가진 hashMap생성
HashMap<String, Integer> = new HashMap<>(10); //초기 용량 지정
HashMap<String, Integer> = new HashMap<>(10, 0.7f);
//초기용량(capacity)와 load factor지정

제네릭 <>안에 왼쪽은 키의 타입, 오른쪽은 값의 타입이다

HashMap은 초기 용량이 16, load factor는 0.75로 정해져있고

그 용량의 과부하수준 16*0.75 = 12에 도달하면 용량을 2배로 늘리게된다

그래서 용량을 미리 알고있다면 용량과 로드팩터를 미리 지정해서 메모리 낭비를 줄일 수 있다

명령어

값 추가 put

map에 값을 추가하고싶으면 put()을 이용해 추가한다

map.put("사과",1);
map.put("바나나",1);
map.put("포도",6);
map.put("오렌지",5);
map.put("수박",12);
map.put("사과",2);
//사과의 값이1이었던게 2로 바뀐다

만약 키값이 이미 내부에 존재한다면 value(값)는 해당 값으로 다시 바뀌게 된다

값 삭제 remove, clear

만약 하나의 키에 해당하는 값을 삭제하고싶으면 remove()를 사용한다

그리고 모든 값을 다 삭제하고싶으면 clear()를 사용한다

map.remove("바나나");
map.clear();

값 출력

기본적으로 맵에 있는 값을 출력하고싶으면 get()을 이용한다

또한 전체를 출력하고싶으면 해당 hashMap의 이름을 넣는다

System.out.println(map.get("사과")); //2
System.out.println(map) // {사과=2, 바나나=1...}

또한 키와 값을 따로 출력하고싶을때는 Entry를 이용한다

for(Entry<String, Integer> entry : map.entrySet() {
	System.out.println("Key : " + entry.getKey() + " = Value : " + entry.getValue());
}

위의 코드는 for each문과 Entry를 이용해 키와 값을 출력하였다

또 키값을 알고싶을때는 keySet()을 이용한다

for(Integer i : map.keyset()) {
	System.out.println(i);
}
//사과, 바나나 ...

다른 Map들

  • HashTable : hashMap과 동일하지만 Thread-Safe하여 동기화를 지원한다
  • LinkedHashMap : haspMap은 순서가 없지만 LinkedHashMap은 순서가 있다
  • TreeMap : 이진트리로 구성되어있다
profile
안녕하세요

0개의 댓글