[JAVA] [HashMap]

Boknami·2023년 10월 21일
0

Java

목록 보기
4/5

🤔 HashMap이란?

키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조


🎈 특징

1. 저장

  • 키 : 중복 저장X
  • 값 : 중복 저장 가능

기존 키가 있는데 저장한다면? 기존 값이 없어지고 새 값으로 대체!

2. 자료 검색 속도의 이점

해시맵의 이름대로 해싱을 사용하기 때문에 데이터양이 많을 시 검색하기에 용이하다!
무조건 배열에서 원소를 찾는 속도보다 빠르다고 생각하면 된다!
그 이유는 해시맵은 키를 찾으면 그 키와 쌍을 이루는 값이 바로 나오기 때문에 시간복잡도 측면에서 O(1)이 되기 때문이다!

3. 단점

해시기법을 적용하기 위해 자바 내부적으로 .hashCode() 메소드를 사용하게 되고 이 때 중복이 발생할 수 있다!

이를 해결하기 위해서 자바에서는 seperate chanining을 사용했다!

이 방식을 중복될 거 같으면 연결리스트로 쭉 이어가는 방식이다!
각 index에 데이터를 저장하는 Linked list에 대한 포인터를 가지는 방식으로 충돌 발생 시 그 index가 가리키고 있는 연결 리스트에 노드를 추가하여 값을 넣음!

이 외에도 Key,Value,Bucket(키,값을 담는 전체적 틀)을 저장하니 공간복잡도 측면에서 배열보다는 안 좋을 수 있다

4.이런 경우는 배열쓰자!

  • 배열의 첫 원소를 찾는다
  • 데이터가 순서를 가지고 있다

📋 Java에서 HashMap을 써보자!

1. 선언

HashMap<Integer,String> map = new HashMap<>()

키는 정수 타입, 값은 문자열 타입의 맵을 생성할게

2. 추가

map.put(1,"오늘의 1등");

3. 삭제

map.remove(1)//키가 1인 것만 지우기
map.clear() //map 싹 다 비우기

4. 출력(검색)

  • 전체 출력

    System.out.println(map);

  • 전체 출력(2)

for(Integer i : map.keySet()){
	System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}

map에서 키를 하나씩 뽑고, 뽑은 키에 해당하는 값을 출력!

5. 키 포함 여부

map.containsKey(1)

  • 일부 출력

    System.out.println(map.get(1));

0개의 댓글

관련 채용 정보