자바 - Map

공부/Spring 2021. 10. 19. 15:49
반응형

Map

key와 value로 이루어져있다.

키는 해당 map에서 중복되지않고 키와 값이 1:1로 저장된다.

(키가 다르고 값이 같은 경우 서로 다른 것으로 간주한다.)

 

모든 데이터는 키와 값이 존재

키없이 값만 저장 불가

값 없이 키만 저장 불가

키는 해당 맵에서만 고유함

값은 중복되어도 상관없음

 

java.util.Map 인터페이스로 선언되어 있다.

 

주요 메소드는

V put(K key, V value) : 키와 값을 데이터에 저장한다.

void putAll(Map<? extends K, ? extends V> m) : 매개변수로 넘어온 Map의 모든 데이터를 저장

V get(Object key) : key에 해당하는 값을 넘겨줌

V remove(Object key) : key에 해당되는 값을 넘기고, 해당 키와 값을 삭제한다.

Set keySet() : 키의 목록을 Set타입으로 리턴함

Collection values() : 값의 목록을 Collection 타입으로 리턴함

Set<Map.Entry<K,V>> entrySet() : Map안에 Entry라는 타입의 Set을 리턴함

int size() : Map 크기 리턴

void clear() : Map내용 지움

 

Map을 구현한 주요 클래스들은 HashpMap, TreeMap, LinkedHashMap, Hashtable 등이 있다.

 

Hashtable 클래스는 Map 인터페이스를 구현하였지만, 다른 Map을 구현한 클래스와는 조금 다르다.

Map은 키,값, 키-값 쌍으로 데이터를 순환하여 처리 가능 // Hashtable은 키-값 쌍으로 데이터를 순환하여 처리 불가

Map은 iteratrion을 처리하는 도중에 데이터를 삭제하는 안전한 방법 제공 // Hashtable은 제공 X

Map은 Collection view 사용 // Hashtable은 Enumeration 객체를 통하여 데이터 처리

 

HashMap과의 차이는

Hashtable은 키나 값에 null을 저장할 수 없고

HashMap과 다르게 여러 쓰레드에서 동시 접근이 가능하다.

 

=> 중요한 것은 어떤 작업에 어떤 클래스가 어울리는지 알고 사용하는 것이다.

 

HashMap

Object - AbstractMap - HashMap

 

생성자

HashMap() : 16개의 저장곤간을 갖는 HashMap 객체 생성

HashMap(int initialCapacity) : 매개변수만큼의 저장공간을 갖는 HashMap객체 생성

HashMap(int initialCapactiy, float loadFactor) : 첫 매개변수의 저장공간을 갖고, 두번째 매개 변수의 로드 팩터를 가지는 객체 생성

HashMap(Map<? extends K, ? extends V> m) : 매개 변수로 넘어온 Map을 구현한 객체에 있는 데이터를 갖는 HashMap객체 생성

 

대부분 HashMap 객체 생성시에는 매개변수가 없는 생성자를 사용한다.

 

import java.util.HashMap;
import java.util.Set;
import java.util.Map.Entry;

public class MapSample {
	public static void main(String[] args){
		MapSample sample=new MapSample();
		sample.checkHashMap();
	}
	//HashMaP객체 생성 후 값 넣기
	public void checkHashMap(){
		HashMap<Strig, String> map = new HashMap<String, String>();
		map.put("A", "a"); //키-값 순서이다.
		
		System.out.println(map.get("A"));
		System.out.println(map.get("B")); // ->null을 리턴 없는값이므로\
		
		map.put("A", "1"); // A의 값이 1로 변경된다.(값 입력, 수정 모두 put을 이용)
		
		//키와 값 모두 확인하려면??
		map.put("C", "c");
		map.put("D", "d");
		Set<String> keySet=map.keySet();//keySet()메소드 사용
		//출력의 순서는 뒤죽박죽이다. List와 Queue외에는 저장순서가 중요하지 않다
		for(String tempKey:keySet){
			System.out.println(tempkey+"="+map.get(tempKey));//값은 get으로 가져옴
		}
		
		//객체에 담겨있는 값만 확인하려면?? => value()
		Collection<String> values=map.values();//HashMap 객체에 담긴 값을 Collection 타입의 목록으로 반환
		for(String tempValue:values){
			System.out.println(tempValue);
		}
		
		
		//Entry 객체를 사용하여 키와 값을 얻기 => getKey(), getValue()사용
		Set<Entry<String, String>> entries= map.entrySet();
		for(Entry<String, String> tempEntry:entries){
			System.out.println(tempEntry.getKey()+"="+tempEntry.getValue())
		}
		
		//키나 값이 존재하는지 확인 => containsKey(), containsValue() 리턴값은 참 거짓
		map.containsKey("A");
		map.containsValue("a");
		
		//데이터 삭제 => remove()
		map.remove("A"); //A를 키로 갖는 데이터가 삭제됨

 

728x90
반응형

'공부 > Spring' 카테고리의 다른 글

회원관리 예제 - 회원도메인, 리포지토리, 테스트케이스  (0) 2021.10.20
스프링 웹개발 기초  (0) 2021.10.20
자바 - Set  (0) 2021.10.18
자바 - 컬렉션(List)  (0) 2021.10.15
자바 - 제네릭  (0) 2021.10.14
블로그 이미지

아상관없어

,