Java - Map

춤추는개발자·2022년 10월 7일
0

Java 정리

목록 보기
42/59

Map이란?

  • Map 인터페이스는 collection 인터페이스와 다른 저장 방식을 가지는 Map 인터페이스를 구현한 Map 클래스들은 Key 와 value 를 하나의 쌍으로 저장하는 방식을 사용합니다.
  • Map이 배열과 리스트와 가장 다른점이라고 한다면 순차적으로 해당 요소값을 구하지 않고 Key를 통해 value를 얻는다는 점 입니다.
  • key는 중복을 허용하지 않지만 value는 중복이 되어도 상관 없습니다.

Map의 대표적인 메서드를 알아보자.

put() 메서드

Map의 데이터를 추가할때는 put() 메서드를 사용한다.

 HashMap<String, String> map = new HashMap<>();
        map.put("오늘 야식", "치킨");
        map.put("먹고싶은거", "커피");
    }

HashMap 역시 제네릭을 사용하고 위의 코드에서는 key, value 모두 String 타입을 사용했다.

get() 메서드

그럼 위의 코드에서 치킨을 반환받고 싶다면 어떻게 해야할까?
get() 메서드를 사용하면 된다.
key값을 입력하면 그 key 값에 해당하는 value 를 반환 받는 메서드이다.

 System.out.println(map.get("오늘 야식"));

위의 코드처럼 작성하면 key의 값 "오늘 야식"에 해당하는 "치킨"을 반환하여 출력 한다.

size() 메서드

map 에 몇개의 데이터가 입력 되있는지 확인하고 싶다면 어떻게 해야할까?
size() 메서드를 사용하면 된다.
현재 map에 저장되어있는 데이터의 개수를 반환한다.

System.out.println(map.size());

위의 코드를 작성하여 실행하면 두개의 데이터가 저장 되어있으니까 2가 출력된다.

remove() 메서드

이제 내가 필요없는 데이터라고 생각하여 삭제하고 싶다면 어떻게 해야할까?
remove() 메서드를 사용하면 된다.
remove(key) 이런식으로 삭제하고 싶은 key값을 입력하면 map에서 그 key 값에 해당하는 key,value 값을 모두 삭제하고 삭제한 value를 반환한다.

System,out.println(map.remove("먹고싶은거");

위의 코드를 작성하여 실행하면 "커피"가 출력된다.

containskey()

내가 Map에 어떤 데이터가 저장되어 있는지 모른다고 하자. 내가 원하는 데이터가 Map에 저장되어 있는지 알고싶다면 어떻게 해야할까?
containskey() 메서드를 사용하면 된다.
containskey(key) 이런식으로 내가 알고 싶은 key 값을 적어준다면 Map에 해당 key값이 있는지 확인하고 있다면 true, 없다면 false를 반환한다.

System.out.println(map.containskey("오늘 야식");

위의 코드를 작성하여 실행하면 true를 출력한다.

getorDefault()

gey() 메서드를 사용하였는데 만약 그 값이 없다면?
원래는 없다면 null 이 출력된다. 하지만 다른 값으로 반환 받고 싶다면 이때 getorDefault() 메서드를 사용하면 된다.
getDefaule(key,"key가 없다면 반환받고 싶은 값") 이런식으로 내가 알고 싶은 value에 해당되는 key 갑을 넣었는데 Map 에 없다면 사용자가 입력한 값이 반환된다.


System.out.println(map.get("지금 먹고싶은거"); 
System.out.println(map.getorDefault("지금 먹고싶은거","피자");

위의 코드는 현재 Map에 "지금 먹고싶은거" key값이 없기 때문에 null이 출력 된다. getorDefault() 메서드를 사용하면 "피자"가 출력된다.

keyset()

System.our.println(map.keyset());

위의 코드와 같이 keyset() 메서드를 사용한다면 현재 Map에 저장되어있는 key값을 모아서 set 자료형으로 반환한다.

Map 클래스에 대해서 알아보자.

HashMap 클래스

  • Map클래스중 가장 많이 사용되는 클래스중 하나 입니다.
  • key와 value 를 한쌍으로 값을 저장합니다.
  • 해시 알고리즘을 사용하여 많은 양의 데이터를 검색하는데 속도가 매우 빠르다.
  • HashMap 클래스는 Map 인터페이스를 구현하기 때문에 key은 중복될 수 없다.
  • value에 null 도 들어갈 수 있다.

HashTable 클래스

  • 멀티 쓰레드에서는 HashMap보다는 HashTable 클래스를 사용한다.
  • Map 인터페이스를 구현한다.
  • HashMap 클래스와 같은 동작을 한다.

0개의 댓글