본문 바로가기
Java

[Java] 버전 별 Map 선언 방법

by 긍고 2024. 9. 27.
728x90
반응형

개요


최근 Java 8로 개발 중에 Map을 선언하고 값을 초기화하는 과정에서 불편함을 느끼게 되었다. 자바 8에서는 Map을 간단하게 초기화할 수 있는 방법이 제한적이었고, 코드가 길어지는 경향이 있었다.

 

그런데 이후 버전에서는 이 문제를 해결할 수 있는 다양한 방법들이 도입되었다. 그래서 이번 글에서는 Java 버전 별 Map 선언 방식의 차이를 설명하며, 더 효율적으로 Map을 다루는 방법을 정리해 보려고 한다.

 

Java에서 Map 선언 방식의 변화


Map은 키-값 쌍으로 데이터를 저장하는 유용한 자료구조다. 하지만 Java의 초기 버전에서는 Map을 선언하고 데이터를 초기화하는 과정이 다소 번거로웠다.

 

Java 9 이후에는 이러한 단점을 보완하기 위한 새로운 메서드들이 추가되면서, Map 선언이 훨씬 간단해졌다. 이러한 변화를 이해하면, 프로젝트에서 더 효율적으로 Map을 사용할 수 있다.

 

Java 8의 Map 선언 방식과 불편함


Java 8에서는 Map을 선언하고 값을 추가하려면 put() 메서드를 사용해야 했다. 이 방식은 값이 많을수록 코드가 길어지고 가독성이 떨어졌다.

Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Orange", 3);

 

위 코드처럼 데이터를 하나씩 추가해야 했기 때문에 간단한 초기화에도 불필요하게 많은 코드가 필요했다. 특히, 값을 미리 알고 있는 경우에도 간단하게 초기화할 수 있는 방법이 없다는 점이 불편했다.

 

Java 9 이후의 개선된 Map 선언


Java 9 이후부터는 Map을 더 간결하게 선언하고 초기화할 수 있는 새로운 메서드들이 추가되었다. Map.of()와 Map.ofEntries() 메서드를 사용하면 여러 개의 값을 한 번에 초기화할 수 있다.

  • Map.of(): 최대 10개의 키-값 쌍을 한 번에 추가할 수 있는 간단한 방법.
  • Map.ofEntries(): 무제한의 키-값 쌍을 추가할 수 있으며, 가변적으로 값을 초기화할 수 있다.
// Java 9 이후의 선언 방식
Map<String, Integer> map = Map.of(
    "Apple", 1,
    "Banana", 2,
    "Orange", 3
);

Map<String, Integer> mapWithEntries = Map.ofEntries(
    Map.entry("Apple", 1),
    Map.entry("Banana", 2),
    Map.entry("Orange", 3)
);

 

위 코드처럼 Java 9에서는 Map.of()와 Map.ofEntries()를 사용해 짧고 간결하게 Map을 초기화할 수 있다.

 

버전 별 Map 선언 방식 비교 예시


Java 8의 Map 선언 예시

Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Orange", 3);

Java 9 이후의 Map 선언 예시

Map<String, Integer> map = Map.of(
    "Apple", 1,
    "Banana", 2,
    "Orange", 3
);

 

위 예시에서 알 수 있듯이, Java 9 이후의 방식은 코드가 훨씬 간결해지고, Map의 초기화가 더 직관적으로 변했다. 특히 많은 값을 선언할 때 가독성이 크게 향상된다.

 

정리


Java 9 이후부터 도입된 Map.of()와 Map.ofEntries() 메서드는 Map을 더 간단하게 초기화할 수 있게 만들어 주었다. Java 8의 방식에 비해 훨씬 효율적이며, 코드를 간결하게 만들어 가독성을 높이는 데 기여한다.

 

만약 여전히 Java 8을 사용하고 있다면, 이러한 변화에 익숙해지는 것도 좋은 방법이다. 새로운 버전의 기능을 적극 활용함으로써 개발 속도를 높이고 코드의 유지보수를 더욱 용이하게 만들 수 있다.

728x90

댓글