본문 바로가기
코드프레소 체험단/Java 프로그래밍

[Java 프로그래밍 초급] Map 자료구조 컬렉션 클래스

by 의정부핵꿀밤 2022. 1. 27.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - Java 프로그래밍 초급 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr


Map 자료 구조 데이터

  • 하나의 데이터를 설명하기 위한 정보를 저장할 때 좋다
  • 속성 간에는 순서가 필요 없다
  • 동일한 속성으로 여러 개의 값이 존재하지 않는다

 

 

 

Map 자료구조를 위해 정의된 인터페이스

  • Pair(Key-Value) 데이터 여러 건을 하나의 객체로 관리한다
  • 입력된 데이터에 순서가 존재하지 않는다
    • Key는 Value를 찾기 위한 고유한 주소의 역할을 수행한다 (인덱스와 유사함)
    • Key는 List<E> 인터페이스의 인덱스와 다르게 순서 개념이 없음 (인덱스와 다른 부분)
    • Pair(Key-Value) 형태로 데이터가 저장되는 구조여서 Collection<E> 인터페이스를 상속받지 않고 독립적으로 정의된다
  • Key는 중복을 허용하지 않고, Value는 중복이 허용된다
  • Collection<E> 인터페이스를 상속받지 않고 독립적으로 정의된 인터페이스
  • 전체 객체를 다루는 메소드는 List<E> 인터페이스와 유사하다
  • 개별 데이터를 다루는 메소드 List<E> 인터페이스와 다르다

 

 

대표적인 Map 자료구조의 컬렉션 클래스

  • HashMap<K, V> 가 가장 많이 사용되는 클래스이다

 

 

HashMap<K, V> 클래스에 대한 이해

  • 다른 언어의 Dictionary와 유사한 컬렉션 클래스
  • Key 값이 Hash 알고리즘을 이용해 구조화되어 있어 Key 값을 이용한 검색 속도가 빠르다
  • java.util 패키지에 존재한다

HashMap<K, V> 객체 생성

  • import java.util.HashMap : HashMap 클래스를 사용하기 위해 컴파일러에 해당 Class가 존재하는 패키지의 정보를 제공한다
  • HashMap : 생성하고자 하는 객체가 HashMap 클래스임을 지정한다
  • <Ke-Type-Class, Value-Type-Class> : 제네릭을 이용해 객체에서 사용할 Key와 Value의 데이터 타입을 지정한다. 이 때 데이터 타입의 Class 이름을 사용한다
  • hashMap-name : 생성하고자 하는 HashMap 객체의 변수명을 지정한다

생성 예시

 


 

 

HashMap<K, V> 객체의 데이터 추가

  • V put(K key, V value) : 데이터를 삽입하고, 만약 기존 키값으로 동일한 값이 존재하면 해당 키의 Value 값을 업데이트한다
  • void putAll(Map<? extends K, ? extends V> m) 

 

 

V put(K key, V value)

  • 객체 생성 시 지정한 데이터 타입(<K, V>)의 Key-Value Pair를 추가한다

 

 

  • Key, Value 값 모두 null 값 허용된다

 

  • Key, Value 모두 특정 Class 에 대한 객체를 사용할 수 있지만, Key에 mutable한 객체 사용은 지양한다

 

  • 객체에 등록되어 있는 Key가 인자로 전달되면, 기존에 저장된 Value를 업데이트한다
  • 업데이트 전 저장되어 있는 Value가 반환된다

 

  • 순서 없이 Pair(Key, Value) 데이터가 추가된다

 

 

 

 

void putAll(Map<? extends K,? extends V> m)

  • 인자로 전달받은 Map 객체의 모든 Pair 데이터를 추가한다
  • HashMap 객체 생성 시 정의한 데이터 타입(<K, V>) 을 원소로 갖는 Map 객체여야 한다
  • 인자로 전달받은 Map 객체에 기존 Key와 중복되는 Pair 존재 시 해당 값으로 업데이트된다

 


 

HashMap<K, V> 객체의 데이터 탐색

  • V get(Object key)
  • default V getOrDefault(Object key, V defaultValue)
  • boolean containsKey(Object key)
  • boolean containsValue(Object value)
  • Collection<V> values()
  • Set<K> keySet()
  • int size()

 

 

V get(Object key)

  • 전달받은 Key에 매핑된 Value를 반환한다

 

 

default V getOrDefault(Object key, V defaultValue)

  • 전달받은 Key에 매핑된 Value를 반환한다
  • 존재하지 않는 Key의 경우 인자로 전달받은 defaultValue를 반환한다
  • defualtValue의 데이터 타입은 객체 생성시 정의한 <K, V>여야 한다

 

 

 

boolean containKey(Object key)

  • 전달받은 Key가 객체에 존재하는 지 확인한 후 수행 결과를 boolean 형태로 반환한다

 

 

 

boolean containsValue(Object value)

  • 전달 받은 Value가 객체에 존재하는 지 확인한 후 수행 결과를 boolean 형태로 반환한다

 

 

 

Collection<V> values()

  • 객체에 존재하는 모든 Value를 Collection 객체 형태로 반환한다

 

 

 

Set<K> keySet()

  • 객체에 존재하는 모든 Key를 Set 객체 형태로 반환한다

 

 

int size()

  • 객체에 존재하는 모든 Pair 데이터의 개수를 조회한다

 

 


HashMap<K, V> 객체의 데이터 변경

  • void clear()
  • V remove(Object key)
  • boolean remove(Object key, Object Value)

 

 

void clear()

  • 객체 내 모든 데이터를 제거한다

 

 

V remove(Object key)

  • 전달받은 Key의 데이터 Pair를 제거하고 해당 Pair의 Value를 반환한다

 

 

boolean remove(Object key, Object value)

  • 전달받은 Key와 Value가 모두 일치하는 데이터 Pair를 제거하고 수행 결과를 boolean 타입으로 반환한다
728x90

댓글