key | value |
---|---|
people | 사람 |
baseball | 야구 |
자바의 맵(Map)은 대응 관계를 쉽게 표한할 수 있게 해주는 자료형으로 사전(dictonary)과 비슷하다.
Map은 리스트나 배열처럼 순차적으로(sequntial) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다.
맵(Map)의 가장 큰 특징이라면 key로 value를 얻어낸다는 점이다.
자바의 맵(Map)중 가장 간단한 HashMap에 대해 알아보자.
Map 역시 List와 마찬가지로 인터페이스이다. Map 인터페이스를 구현한 Map 자료형에는 HashMap, LinkedHashMap, TreeMap등이 있다. 인터페이스에 대해서는 객체지향 챕터에서 자세하게 다룰 것이다
put
HashMap에 key, value 입력하는 메소드
import java.util.HashMap;
public class Sample{
public static void main(String[] args){
HashMap<String, String> map = new HashMap<>();
map.put("people", "사람");
map.put("baseball", "야구");
}
}
HashMap 역시 제네릭스를 이용한다.위의 HashMap의 제네릭스는 Key, Value 모두 String 타입이다.
get
key의 value값을 얻기 위한 메소드
System.out.println(map.get("people")); // "사람" 출력
맵의 key에 해당하는 value가 없을 경우 null이 리턴된다. 이때 null 대신 지정값을 얻고 싶은 경우 getOrDefault
메소드를 사용한다.
System.out.println(map.getOrDefault("java","자바")); // "자바" 출력
containsKey
맵(Map)에 해당 키(key)가 있는지 여부 출력(true/false)
System.out.println(map.containsKey("people")); //true 출력
remove
맵(Map)의 항목 삭제하는 메소드로 key값의 (key,value)를 삭제하고 value 값을 리턴한다.
System.out.println(map.remove("people")); // "사 람" 출력
"people"에 해당되는 아이템(people:사람)이 삭제된 후 "사람"이 출력된다.
System.out.println(map.size()); // 1 출력
"people","baseball" 두 값을 가지고 있다가 "people"이 삭제되었으므로 1이 출력된다.import java.util.HashMap;
public class Sample{
public static void main(String[] args){
HashMap<String, String> map = new HashMap<>();
map.put("people","사람");
map.put("baseball","야구");
System.out.println(map.keySet()); // [baseball, people] 출력
}
}
keySet()
메소드는 Map의 모든 Key를 Set 자료형으로 리턴한다.List<String> keyList = new ArrayList<>(map.keySet());
- LinkedHashMap과 TreeMap
Map은 순서에 상관없이 key로 value를 가져오는 특징이 있다.
그러나 Map의 key 순서대로 데이터를 가져올 수 있는 방법이 있는데 이는LinkedHashMap
과TreeMap
을 사용하는 방법이다.
- LinkedHashMap - 입력된 순서대로 데이터를 저장한다.
- TreeMap - 입력된 key의 오름차순으로 데이터를 저장한다.