[JAVA] Map

고민정·2024년 4월 8일

JAVA

목록 보기
29/32


🎇 Map

  • <key, value> 쌍으로 저장

  • key 는 중복 ❌

    만약 중복되면 원래 있던 값을 나중에 들어온 값으로 대체 후 key값을 유지

  • put(Object, Object)
    key, value 값을 저장

  • get(Object)
    key 값을 매개변수로 받아 값을 꺼내기

  • keySet()
    key 값을 한 번에 불러오기


💡 E.g.

Map 은 인터페이스이기 때문에 new 연산자를 이용해서 객체를 만들 수 가 없다.
따라서 HashMap() 을 이용해서 만들어준다.

import java.util.*;

public class MapExam {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Sara");
        map.put(2, "Anthony");
        map.put(1, "Kevin");
        map.put(3, "Kyle");

        System.out.println(map.keySet());
        System.out.println("---------------------------");

        System.out.println(map.get(2));
        System.out.println("---------------------------");
        
        //using set to get all value and keys in the map
        Set<Integer> keys = map.keySet();
        Iterator<Integer> iterator = keys.iterator();
        while(iterator.hasNext()){
            int key= iterator.next();
            String value = map.get(key);
            System.out.println(key + " " + value);
        }
        System.out.println("---------------------------");

        for(int i=1;i<=map.size();i++){
            System.out.println(i +" "+ map.get(i));;
        }
        System.out.println("---------------------------");

    }
}


		map.put(1, "Sara");
        map.put(2, "Anthony");
        map.put(1, "Kevin");
        map.put(3, "Kyle");

key 값이 중복되면 원래 값은 버리고 나중에 들어온 값으로 대체한다는 것을 볼 수 있는 코드이다.

결과 사진을 보면 1번 key 에 Sara 가 아닌 Kevin 이 들어가 있는 것을 볼 수 있다.


key와 value를 한 번에 출력하는 방법이다.

		//using set to get all value and keys in the map
        Set<Integer> keys = map.keySet();
        Iterator<Integer> iterator = keys.iterator();
        while(iterator.hasNext()){
            int key= iterator.next();
            String value = map.get(key);
            System.out.println(key + " " + value);
        }

key 값을 Set 으로 넘겨준다.
set 으로 넘어간 key 값을 iterator 로 꺼내준다.
그리고 하나씩 넘어오는 key 값을 map 으로 받아서 value 와 함께 출력해주면 된다.


아래는 내가 for 문으로 꺼내본 코드다.
출력은 같게 되나 정확히 같은지는 모르겠다.

		for(int i=1;i<=map.size();i++){
            System.out.println(i +" "+ map.get(i));;
        }

0개의 댓글