1. Map
자바에서 Map 이란 "키(Key)-값(Value)" 쌍으로 이루어진 데이터를 말한다.
"키(Key)"란 데이터들을 구분지어주기 위해 사용되는 것으로 중복이 불가능 하다.
"값(Value)"란 지정된 "키"에 매칭되어 있는 데이터로 중복이 가능하다.
Map 인터페이스를 구현하는 클래스의 종류는 많지만 그중 HashMap, TreeMap, LinkedHashMap 을 가장많이 사용 한다.
그중 가장 많이 사용되는 HashMap을 사용해보자.
public class HashMapCheck {
public static void main(String[] args) {
//String key, Object value
HashMap<String,Object> map = new HashMap<>();
map.put("a", 1);
System.out.println(map.get("a"));
System.out.println(map.get("b"));
}
}
HashMap을 선언한 부분에서 <String,Object> 제네릭을 사용하였는데 이는 String형 key와 Object형 value 를 지정해준 것이다. 사용자의 의도에 맞추어서 변경이 가능하다.
put() 메소드는 Map에 key, value 를 담아두는 기능이고 이를 꺼내기 위해서 get() 메소드를 사용한다.
실행결과를 확인해 보면 현재 key 값으로 "b"를 가지고 있는 데이터가 존재하지 않으므로 null이 출력된것을 볼 수 있다.
2. HashMap 객체의 값을 조회 및 삭제하는 방법
put() 메소드와 get() 메소드를 사용하여 HashMap 객체의 값을 확인하는 방법도 있지만 다른 방법도 존재한다
- keySet()
public class KeySeyCheck {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
Set<String> set = map.keySet();
for (String str : set){
System.out.println(str + " : " + map.get(str));
}
}
}
keySet() 메소드는 HashMap 객체에 담겨있는 key값들을 Set 타입으로 리턴해준다. 이를 활용하여 value를 추출하는것 또한 가능하다.
- values()
public class ValueCheck {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
Collection<Object> values = map.values();
for (Object obj : values){
System.out.println(obj);
}
}
}
values() 메소드는 HashMap 객체에 담겨있는 value값들을 Collection 타입으로 리턴해 준다.
- entrySet()
public class EntrySetCheck {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
Set<Map.Entry<String,Object>> set = map.entrySet();
for (Map.Entry<String,Object> entry : set){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
entrySet() 메소드는 Map 타입에 선언된 Entry라는 타입의 객체를 리턴한다. 이 Entry는 하나의 키와 값이 저장된다. 따라서 getKey()와 getValue()를 사용하여 key와 value 값을 가져올 수 있다.
- ContainKey(), ContainValue()
public class ContainsCheck {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
System.out.println(map.containsKey("a"));
System.out.println(map.containsKey("c"));
System.out.println(map.containsValue(2));
System.out.println(map.containsValue(3));
}
}
ContainKey(), ContainValue() 메소드는 매개변수로 key와 value 를 넘겨 HashMap 객체에 데이터가 존재하는지 확인하는 메소드로 boolean 타입으로 리턴해준다.
- remove()
public class RemoveCheck {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
System.out.println(map.size());
map.remove("a");
System.out.println(map.size());
}
}
remove() 메소드는 매개변수로 key값을 넘겨 해당 key를 가지고 있는 데이터를 삭제한다.
size() 메소드는 현재 HashMap 객체의 크기를 리턴해주는 메소드이다.
3. 정렬된 키의 목록 TreeMap
Hash 맵은 List와 다르게 순서가 존재하지 않는다. 이는 다음장에서 언급하겠다.
하지만 정렬된 Map을 사용하고 싶을때 TreeMap 이라는 클래스를 사용한다.
정렬이되는 순서는 "숫자 > 알파벳 대문자 > 알파벳 소문자 > 한글" 순서이다
public class TreeMapCheck {
public static void main(String[] args) {
Map<String,Object> treeMap = new TreeMap<>();
treeMap.put("A","a");
treeMap.put("한글","b");
treeMap.put("1","c");
treeMap.put("a","d");
Set<Map.Entry<String,Object>> set = treeMap.entrySet();
for (Map.Entry<String,Object> entry : set){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
'JAVA' 카테고리의 다른 글
자바 NIO (0) | 2021.12.30 |
---|---|
직렬화(Serialization) (0) | 2021.12.29 |
컬렉션 프레임워크(Collection Framework) (4) - 해시테이블(Hashtable), 해시맵(HashMap) (1) | 2021.12.28 |
컬렉션 프레임워크(Collection Framework) (2) - Set & Queue (0) | 2021.12.27 |
컬렉션 프레임워크(Collection Framework) (1) - 리스트(List) (0) | 2021.12.27 |
쓰레드(3) - Synchronized (1) | 2021.12.24 |