Java 61(Map 인터페이스)

Kang.__.Mingu·2024년 5월 15일
0

Java

목록 보기
63/108

Map

  • Map 인터페이스를 상속받은 콜렉션 클래스

    • HashMap 클래스, Hashtable 클래스, Properties 클래스 등
  • 이름(Key - 값을 구분하기 위한 식별자)과 값(Value - 객체)을 하나의 그룹으로 묶어

  • Map 객체의 요소값(Entry)으로 저장하여 사용

  • 이름(Key)을 사용하여 값(Value)을 빠르게 검색하여 제공하기 위해 사용하는 콜렉션 클래스

Map<Key, Value> 변수명 = new HashMap<>();


Map 메소드

  • Map.put(K key, V value)

    • 매개변수로 전달받은 이름과 값을 하나의 엔트리(Entry)로 묶어
    • Map 객체에 추가하여 저장하는 메소드
    • Map 객체에 저장된 엔트리의 이름(Key)은 내부적으로 Set 객체로 저장되어 있으므로 동일한 이름(Key)의 엔트리는 중복되지 않으며 순서 없이 저장
    • Map 객체에 동일한 이름(Key)의 엔트리를 저장할 경우 엔트리의 값(Value) 변경 처리
  • Map.get(K key)

    • Map 객체에 저장된 엔트리 중 매개변수로 전달받은 이름의 엔트리 값(Value)을 반환하는 메소드

      • 매개변수로 전달받은 이름의 엔트리가 Map 객체에 없는 경우 [null] 반환
  • Map.remove(K key)

    • Map 객체에 저장된 엔트리 중 매개변수로 전달받은 이름의 엔트리를 삭제하는 메소드
  • Map.keySet()

    • Map 객체에 저장된 모든 엔트리의 이름(Key)이 저장된 Set 객체를 반환하는 메소드
  • Map.values()

    • Map 객체에 저장된 모든 엔트리의 값(Value)가 저장된 Collection 객체(List 객체)를 반환하는 메소드

Map 객체 안에 있는 값을 출력하는 방법

Iterator 방법

  • Map.iterator()

    • Map 객체에 저장된 요소값을 반복 처리할 수 있는 Iterator 객체를 반환하는 메소드
  • Iterator 객체: 콜렉션 클래스의 객체에 저장된 요소값을 반복 처리하기 위한 기능을 제공하는 객체

  • 반복지시자: 내부의 커서(Cursor)를 사용하여 콜렉션 클래스의 객체 요소값을 제공받아 반복 처리

  • 제네릭에 클래스를 전달하여 Iterator 객체로 반복 처리할 수 있는 객체 설정

Iterator< 타입 > 변수명 = 참조변수.values().iterator();

  • Iterator 객체를 사용하여 Set 객체에 저장된 모든 요소값(객체)을 제공받아 일괄 처리

  • Iterator.hasNext()

    • Iterator 객체로 처리 가능한 요소값의 존재 유무를 논리값으로 반환하는 메소드
      fallse: 처리될 요소값 미존재, true: 처리될 요소값 존재
  • Iterator.next()

    • Iterator 객체로 처리될 요소값(객체)를 반환하는 메소드

Key 출력 방법

Iterator<Integer> iteratorKey=map.keySet().iterator();

while (iteratorKey.hasNext()) {
	Integer key=iteratorKey.next();
	String value=map.get(key);
	System.out.println(key+" = "+value);
}

Value 출력 방법

Iterator<String> iteratorValue=map.values().iterator();

while (iteratorValue.hasNext()) {
	String value = iteratorValue.next();
	System.out.println(value);
}

향상된 for문 이용 방법(적극 추천!!!)

  • 향상된 for 구문을 사용하여 Set 객체에 저장된 요소값(객체)를 차례대로 제공받아 참조변수에 저장해 일괄처리 가능
    • 향상된 for 구문을 사용하면 내부적으로 Iterator 객체를 사용해 반복 처리

for(String value : map.values()) {
System.out.println(value);
}


MapApp

public class MapApp {
    public static void main(String[] args) {
        //이름(K)과 값(V)에 대한 제네릭에 Java 자료형을 전달여 객체 생성

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

        //Map.put(K key, V value) : 매개변수로 전달받은 이름과 값을 하나의 엔트리(Entry)로 묶어
        //Map 객체에 추가하여 저장하는 메소드
        // => Map 객체에 저장된 엔트리의 이름(Key)은 내부적으로 Set 객체로 저장되어 있으므로
        // 동일한 이름(Key)의 엔트리는 중복되지 않으며 순서 없이 저장
        map.put(1000, "홍길동");
        map.put(2000, "임꺽정");
        map.put(3000, "전우치");
        map.put(4000, "일지매");
        map.put(5000, "장길산");

        System.out.println("map = "+map);
        System.out.println("==============================================================");
        //Map 객체에 동일한 이름(Key)의 엔트리를 저장할 경우 엔트리의 값(Value) 변경 처리
        map.put(2000, "임걱정");
        System.out.println("map = "+map);
        System.out.println("==============================================================");
        //Map.get(K key) : Map 객체에 저장된 엔트리 중 매개변수로 전달받은 이름의 엔트리
        //값(Value)을 반환하는 메소드
        // => 매개변수로 전달받은 이름의 엔트리가 Map 객체에 없는 경우 [null] 반환
        String name=map.get(1000);
        System.out.println("name = "+name);
        System.out.println("==============================================================");
        //Map.remove(K key) : Map 객체에 저장된 엔트리 중 매개변수로 전달받은 이름의 엔트리를
        //삭제하는 메소드
        map.remove(4000);
        System.out.println("map = "+map);
        System.out.println("==============================================================");
        //Map.keySet() : Map 객체에 저장된 모든 엔트리의 이름(Key)이 저장된 Set 객체를 반환하는 메소드
        Iterator<Integer> iteratorKey=map.keySet().iterator();

        while (iteratorKey.hasNext()) {
            Integer key=iteratorKey.next();
            String value=map.get(key);
            System.out.println(key+" = "+value);
        }
        System.out.println("==============================================================");
        for(Integer key : map.keySet()) {
            System.out.println(key+" = "+map.get(key));
        }
        System.out.println("==============================================================");
        //Map.values() : Map 객체에 저장된 모든 엔트리의 값(Value)가 저장된 Collection 객체
        //(List 객체)를 반환하는 메소드
        Iterator<String> iteratorValue=map.values().iterator();
        while (iteratorValue.hasNext()) {
            String value = iteratorValue.next();
            System.out.println(value);
        }
        System.out.println("==============================================================");
        for(String value : map.values()) {
            System.out.println(value);
        }
        System.out.println("==============================================================");
    }
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글