Programming/Java

[Java] Map이란? (개념, 활용, 예제 등)

코딩무니 2022. 10. 2. 17:08
728x90
반응형

Java의 자료구조 - Map의 개념, 활용, 예제 정리

 

 

1. Map 이란?

 

- Map은 리스트나 배열처럼 순차적으로 요소의 값을 구하는 것이 아닌 key를 통해 value(값)를 얻는다.

 

Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다. 

Map은 키(key)와 값(value)을 하나의 쌍으로 저장하는 방식(ket-value방식)을 사용한다.

 

 

2. Map의 특징

 

1. 저장 순서를 유지하지 않는다.

2. 키는 중복을 허용하지 않는다. (값의 중복은 허용)

 

 

3. Map 활용

 

put

// 1 <String, String>
Map<String, String> map1 = new HashMap<String, String>();

map1.put("watch", "시계");
map1.put("whale", "고래");
map1.put("blog", "블로그");


// 2 <String, Integer>
Map<String, Integer> map2 = new HashMap<String, Integer>();
map2.put("one", 1);
map2.put("two", 2);
map2.put("three", 3);


// 3 <String, List<String>>
Map<String, List<String>> map3 = new HashMap<>();

List<String> numList = new ArrayList<String>();
numList.add("one");
numList.add("two");
numList.add("three");

map3.put("number", numList);

 

get

List<String> numList = map3.get("number");
System.out.println(numList);

 

containsKey

// containsKey 메소드는 해당 Key가 있으면 true, 없으면 false를 리턴한다.
map1.containsKey("watch");

 

remove

// remove 메소드는 해당 key값에 해당하는 아이템을 삭제한 후 해당 key의 value값을 리턴한다.
map1.remove("apple");

 

 

5. Map 예제

 

[예제 1]

Map<String, String> map = new HashMap<String, String>();

map.put("watch", "몰라");
map.put("whale", "몰라");
map.put("blog", "몰라");
map.put("apple", "몰라");

map.put("watch", "시계");
map.put("whale", "고래");
map.put("blog", "블로그");

for(String key : map.keySet()) {
	System.out.println("key : " + key + ", value : " + map.get(key));
}

위 결과를 보면 순서 상관없이 출력되는 것을 알 수 있으며, 이미 존재하는 key값에 중복으로 put해도 2번출력되지 않는다.

 

Key값이 이미 존재하는 경우 Value값을 갱신한다.

 

 

[예제 2]

// 3 <String, List<String>>
Map<String, List<String>> map3 = new HashMap<>();

List<String> numList = new ArrayList<String>();
numList.add("one");
numList.add("two");
numList.add("three");

map3.put("number", numList);

if(map3.containsKey("number")) {
	numList = new ArrayList<String>();
	numList = map3.get("number");
    for(String num : numList) {
    	System.out.println(num);
    }
}
728x90
반응형