CS

자바 Map.of 사용 방법

쿠키담임선생님 2022. 9. 20. 08:51

사용 이유


예시코드를 보다가 map.of()라는 메서드가 있길래 내가 아는 맵과는 다른 것 같아 분석해 보았다.

map.of 는 map.put(1, "yhy") 이런 키와 밸류들을 하나하나 집어넣는 동작을 조금? 줄여준다.


분석


코드로 확인해 보자면

private Map<Integer, String> map = new HashMap<>() {
  {
    put(1, "aaaaaaaa");
    put(2, "bbbbbbbbb");
    put(3, "ccccccc");
  }
};

위 코드는 우리가 아는 해쉬맵을 사용하는 코드이다.

하지만 자바 버전 9 이상부터는 Map.of를 통해 조금 더 간단하게 작성이 가능하다.

private Map<Integer, String> map = Map.of(
    1, "aaaaaa",
    2, "bbbbbbbb",
    3, "ccccccccc"
);

이렇게 쓸 수 있다. 늘려 쓰면 이런형태가 된다.

private Map<Integer, String> map = Map.of(1,"aaaaaa",2,"bbbbbbbb",3,cccccccc"
);

문제점


map.of 는 최대 데이터가 10개밖에 안들어간다. 즉 11번째 키,밸류 부터는 입력되지 않는다.

이를 해결하려면 ofEntries() 를 이용해 처리 가능하다.

private static Map<Integer, String>map = Map.ofEntries(
    Map.entry(k:1, v:"aaaaa"),
    Map.entry(k:2, v:"aaaaa"),
    Map.entry(k:3, v:"aaaaa"),
    Map.entry(k:4, v:"aaaaa"),
    Map.entry(k:5, v:"aaaaa"),
    Map.entry(k:6, v:"aaaaa"),
    Map.entry(k:7, v:"aaaaa"),
    Map.entry(k:8, v:"aaaaa"),
    Map.entry(k:9, v:"aaaaa"),
    Map.entry(k:10, v:"aaaaa"),
    Map.entry(k:11, v:"aaaaa"),
);

'CS' 카테고리의 다른 글

순열, 조합 자바로 코딩(JAVA)  (0) 2022.11.24
B-tree 와 B+ tree 에 대한 정리 글(면접질문)  (0) 2022.11.22
Elasticsearch에 대하여. (엘라스틱서치)  (0) 2022.11.14
MSA 방식이란?  (0) 2022.11.14
기술면접 질문 모음  (3) 2022.09.12