반응형
  • Map의 메서드 설명 + HashMap 사용 예제 + value값으로 검색 예제

Map이란?

  • key, value 쌍으로 이루어진 데이터의 집합
  • 순서가 없고, key는 중복이 안되지만 value는 중복이 가능함

Map의 메서드 정리

clear()

  • map의 모든 객체를 삭제함

put(Object key, Object value)

  • key-value를 한 쌍의 세트로 묶어 추가

putAll(Map m)

  • map m의 모든 key-value 세트 추가

isEmpty()

  • map이 비어있는지 확인 후 비어있으면 true, 안 비어있으면 false return

containsKey(Object key)

  • 파라미터로 들어온 key와 일치하는 key가 map에 있는지 확인

containsValue(Object value)

  • 파라미터로 들어온 value와 일치하는 value가 map에 있는지 확이

equlas(Object o)

  • 동일한 map인지 비교

size()

  • map에 저장된 key-value 세트 개수 return

remove(Object key)

  • 파라미터로 들어온 key와 일치하는 key를 가진 key-value 세트 삭제

entrySet()

  • 모든 세트 return

hashCode()

  • 해시코드 return (int 형)

get(Object key)

  • 파라미터로 들어온 key에 해당하는 value return

keySet()

  • map에 저장된 모든 key 객체 return

values()

  • map에 저장된 모든 value 객체 return

Map의 종류

  • Map의 종류로는 HashMap, HashTable, LinkedHashMap, TreeMap 등이 존재

HashMap 사용 예제 1

package CollectionTest.MapTest;

import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) {

        Map<String, Object> capital = new HashMap<String, Object>();

        capital.put("한국", "부산");
        capital.put("미국", "워싱턴");
        capital.put("일본", "도쿄");
        capital.put("중국", "베이징");
        capital.put("영국", "런던");
        capital.put("한국", "서울");
        // "한국" key를 가진 set의 value값을 변경하고 싶으면
        // 위와 같이 다시 put 해주면 됨

        System.out.println(capital.toString()); // 전체 출력 (String 타입)
        System.out.println(capital.entrySet()); // 전체 출력 (Set 타입)
        System.out.println(capital.keySet());   // key 객체만 출력
        System.out.println(capital.values());   // value 객체만 출력
        System.out.println(capital.size());        // map의 사이즈

        if(capital.containsKey("한국") == true) {       // key값에 "한국"이면 존재하면
            Object koreacapital = capital.get("한국");  // key값으로 value값 추출
            System.out.println(koreacapital);
        }

        Map<String, Object> capital2 = new HashMap<String, Object>();
        capital2.putAll(capital);       // map 복사
        capital2.remove("중국");        // key값이 "중국"인 set 삭제
        System.out.println(capital.equals(capital2));   // 두개의 map이 같은지 확인
        System.out.println(capital2.entrySet());    // captial2 출력
    }
}

결과

{미국=워싱턴, 일본=도쿄, 영국=런던, 중국=베이징, 한국=서울}
[미국=워싱턴, 일본=도쿄, 영국=런던, 중국=베이징, 한국=서울]
[미국, 일본, 영국, 중국, 한국]
[워싱턴, 도쿄, 런던, 베이징, 서울]
5
서울
false
[미국=워싱턴, 한국=서울, 일본=도쿄, 영국=런던]

Map 예제 2

  • Map의 메서드 중에 key 값으로 set를 찾아내는 메서드는 존재하지만
  • value 값으로 set를 찾아내는 메서드는 따로 존재하지 않아서, 이럴 때는 반복문을 사용해야 함
  • 여러가지 방법이 있겠지만, 다음과 같은 방법으로도 가능
package CollectionTest.MapTest;

import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) {

        Map<String, String> player = new HashMap<String, String>();
        Map<String, String> koreanPlayer = new HashMap<String, String>();
        player.put("메시", "아르헨티나");
        player.put("네이마르", "브라질");
        player.put("손흥민", "대한민국");
        player.put("박지성", "대한민국");

        for(Map.Entry<String, String> entry : player.entrySet()) {
            if(entry.getValue() == "대한민국") {
                koreanPlayer.put(entry.getKey(), entry.getValue());
            }
        }

        System.out.println(koreanPlayer.entrySet());
    }
}
  • "player" map에서 value값이 "대한민국"인 set들을 모아 새로운 "koreanPlayer" map 생성

결과

[손흥민 = 대한민국, 박지성 = 대한민국]
반응형

↓ 클릭시 이동

복사했습니다!