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

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

by 의정부핵꿀밤 2022. 6. 10.
728x90

< Map 자료구조 컬렉션 클래스에 대한 이해 >

 

Map 자료 구조 데이터

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

 

 

 

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

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

 

 

 

 

Map<K, V> 인터페이스에 대한 이해

  • 전체 객체를 다루는 메서드는 List<E> 인터페이스와 유사하다
  • 그러나 개별 데이터를 다루는 메서드 List<E> 인터페이스와는 다르다

 

 

 

 

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

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

 

 

 

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

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

< Map 자료구조 컬렉션 클래스의 활용 >

 

HashMap 객체 생성 문법

import java.util.HashMap;

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

 

 

 

HashMap 객체 생성

 

 

 

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

  • V put(K key, V 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가 반환된다

 

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

 

 

 

 

 

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

  • 인자로 전달받은 Map 객체의 모든 Pari 데이터를 추가한다
    • 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를 반환한다
    • defaultValue의 데이터 타입은 객체 생성 시 정의한 <K, V>이어야 한다

 

 

 

boolean containsKey(Object key)

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

 

 

 

boolean containsValue(Object value)

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

 

 

 

Collection<V> values()

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

 

 

 

Set<K> keySet()

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

 

 

 

int size()

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

 

 

 

 

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

  • void clear()
  • V remove(Object key)
  • boolean remove(Object Key, Object value)

 

 

 

void clear()

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

 

 

 

V remove(Object key)

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

 

 

 

 

boolean remove(Object ket, Object value)

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

 

  • 전달받은 Key와 Value가 모두 일치하지 않는 데이터를 요청할 경우, false를 반환하고 삭제되지 않는다

 

728x90

댓글