Java 컬렉션(Collection) Map

jooog·2021년 10월 1일
0

HashMap

HashMap은 hash table에 데이터를 저장하는데 hash table은 배열과 linked list로 구성된다.

Map 컬렉션은 key와 value로 구성된 객체이며 key와 value도 각각 객체다.

key는 중복될 수 없지만 value는 중복 저장이 가능하다.

구현 클래스로는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap이 있다

[HashMap]

public static void main(String[] args) {

        HashMap map = new HashMap();
        map.put("a", 123);
        map.put("b", 456);
        map.put("c", 789);

        System.out.println(map);
    }

HashMap 객체 생성

위의 코드에서 보면 HashMap 객체를 생성하고 put 메소드로 새로운 객체를 추가했다.

 map.put("a", 123);
 map.put("b", 456);
 map.put("c", 789);

System.out.println(map);


[Console]

{a=123, b=456, c=789}

console에서 key=value로 저장된 것을 확인할 수 있다.

HashMap 데이터 출력

 System.out.println(map.get("four"));

key("four")로 데이터를 찾아보면 나중에 저장된 value 30을 출력한다

요약: map의 경우 put으로 keyvalue를 지정해 데이터를 저장하며 key가 중복되는 경우에는 나중에 저장된 데이터로 한번만 저장된다.

HashMap 메서드

주요 메서드로는 entrySet, keySet, values가 있다.

entrySet은 키-값 한 쌍의 데이터를 가져올 때, keySet은 key 데이터만 필요할 때, values는 value 데이터만 확인하고 싶을 때 사용한다.

keySet으로 데이터 출력

map의 key만 뽑아서 데이터를 출력해보자

Set<String> keySet = map.keySet();

   Iterator<String> keyIterator = keySet.iterator();

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

map.keySet()으로 key만 뽑아서 Set 컬렉션 안에 넣어준다

Iterator로 map의 key를 뽑아 주고 key의 데이터 타입은 string이기 때문에 동일한 타입으로 설정해준다

keyIterator.hasNext()

key가 있으면 (true)라면 다음 key를 찾는 while문을 돌린다

String key = keyIterator.next();
int value = map.get(key);

가져온 key는 String 타입의 key에 담고 가져온 value도 int 타입의 value에 담아준다

entrySet으로 데이터 출력

여기서 entry란 키-값 하나의 묶음을 의미한다.

Set<Map.Entry<String, Integer>> entrySet = map.entrySet();

 Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator();

      while (entryIterator.hasNext()) {
        Map.Entry<String,Integer> entry = entryIterator.next();
        String key = entry.getKey();
        Integer value = entry.getValue();

     System.out.println(key +": "+ value);
        }

keySet 이외에 entrySet 으로도 데이터를 출력할 수 있다.

Map 객체 삭제하기

map.remove("one");

삭제하고자 하는 key를 넣어 해당 객체만 삭제한다.

0개의 댓글