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
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를 키로 갖는 데이터가 삭제됨
'공부 > Spring' 카테고리의 다른 글
회원관리 예제 - 회원도메인, 리포지토리, 테스트케이스 (0) | 2021.10.20 |
---|---|
스프링 웹개발 기초 (0) | 2021.10.20 |
자바 - Set (0) | 2021.10.18 |
자바 - 컬렉션(List) (0) | 2021.10.15 |
자바 - 제네릭 (0) | 2021.10.14 |