본문 바로가기
Java

[Java] Map 자세히 알아보기

by NJ94 2023. 11. 16.

인터페이스란 무엇인가?


Java 프로그래밍에서 추상화된 형태를 제공하는데, 구체적인 구현이나 동작은 해당 인터페이스를 구현한 클래스에서 이루어진다. 

 

- 인터페이스는 일종의 계약(Contract)으로, 클래스가 따라야 하는 메서들의 명세를 제공한다

- 메서드의 이름, 매개변수, 반환 유형은 정의되지만 실제 구현은 제공하지 않는다.

- 인터페이스는 추상화된 형태이며, 구현체에서 실제 동작을 제공해야한다.

 

인터페이스로는 인스턴스를 생성할 수 없다.


- 인터페이스는 추상화된 형태이기 때문에 객체를 직접적으로 생성할 수 없다. 객체를 생성하려면 해당 인터페이스를 구현한 클래스가 필요하다

- 인터페이스는 단지 메서드의 정의만을 포함하고 있기 때문에, 객체의 상태나 특정한 동작 구현을 가지지 않는다

- 객체 생성을 위해서는 실제 구현을 갖춘 클래스가 필요하다. 이 클래스는 인터페이스의 메서들을 구현하여야 한다.

 

추상화


- 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 가추려 내는 것

- 어떤 작업을 수행할 때 그 이면에 존재하는 복잡한 것들을 간단한 것처럼 보이게 만들어 주는 것.

- 참고: https://velog.io/@ha0kim/2020-12-21

 

Map


- Map은 Java에서 키-값(key-value)쌍을 저장하는 데이터 구조

- 각각의 키는 유일해야 하며, 키와 값은 일대일 관계를 가진다. 따라서 키를 통해 값에 접근할 수 있다.

- Map은 Hash Map, Tree Map, Linked Hash Map 등 다양한 방식으로 구현될 수 있다. 이들은 각각 다른 방식으로 키와 값을 저장하고 관리한다.

 

- Hash Map: 해시 함수를 사용하여 데이터를 저장하고, 키를 해시맵 내의 인덱스로 매핑하여 빠른 검색이 가능하다

- Tree Map: 이진 검색 트리(Binary Search Tree) 구조를 사용하여 키를 정렬된 상태로 저장하여 검색, 삽입, 삭제에 빠른 성능을 제공한다

- Licked Hash Map: 해시맵과 연결 리스트를 결합하여 순서를 유지하면서도 해시 맵의 빠른 검색 기능을 제공한다

 

Map 인터페이스는 키-값 쌍을 저장하는 자료구조를 정의하고 있지만, 실제로 메소드의 구현은 없습니다.

따라서 Map 인터페이스에 정의된 추상화된 메서드들인 put, putAll, get 등과 같은 메서드를 사용하려면,

인터페이스를 구현한 구체적인 클래스인 HashMap, TreeMap, LinkedHashMap 등을 사용해야 한다.

Map<Long, Member> store = new HashMap<>();
store.put(1L, new Member("John"));
Member member = store.get(1L);

 

예를들어, HashMap은 map 인터페이스를 구현한 구현체 중 하나이며, Map 에서 정의된 메서드들을 구현하고 있습니다. 따라서 HashMap 클래스의 인스턴스를 생성하고 Map 인터페이스의 참조로 사용하면 Map 에서 정의된 put, putAll, get 등과 같은 메서드들 사용할 수 있게 된다.

 

Java Docs Map

* java v17 Docs : https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html

 

Map - Interface

 

Map 추상화 메서드 (Abstract Methods)


Abstract Methods

 

Map 인터페이스를 구현한 구체적인 클래스


All Known Implementing Classes:

 

 

Hash Map


HashMap은 Map 인터페이스 구현한 해시맵의 일종. 키와 값을 해시 테이블에 저장하여 빠른 검색 성능을 제공한다.

 

HashMap은 배열과 연결 리스트혹은 트리로 구성된 버킷 배열을 사용하여 데이터를 저장한다. 해시 함수를 사용하여 각 키를 해시 코드로 변환하고, 해당 코드에 맞는 버킷에 값을 저장한다. 충돌이 발생할 경우, 연결 리스트 또는 트리를 사용하여 충돌을 해결하고 값을 저장한다.

 

Hash Map

'Java' 카테고리의 다른 글

[Java] LinkedHashMap  (0) 2023.12.24
[Java] Optional  (0) 2023.11.16
[Java] 배열(Array) vs 리스트(List) 차이.  (0) 2023.11.09