Pair 인스턴스?
- Kotlin Pair는 Map의 아이템으로 사용한다.
- Java에서는 Entry 클래스를 Map의 아이템으로 사용한다. Map에 데이터를 넣은 채로 초기화하기 위해서 다양한 방법이 있다.
Map 초기화 방법 비교
1. Java Map 초기화
1 | Map<String, String> map = Stream.of(new String[][] { |
- 초기화 할 데이터를 String 2차원 배열로 생성, Stream의 collect 메소드와 Collectors의 toMap()을 활용하는 방법이다.
매우 길다.
1 | Map<String, String> map = Stream.of( |
- 위의 방법과 똑같이 Collectors.toMap()을 사용하지만 String 2차원 배열을 사용하는 것이 아니라 Map의 요소인 Entry 클래스를 사용하는 방법이다. 이것 또한 매우 길고 오히려 배열을 사용하는 것보다 더 가독성이 떨어지게 느껴진다..
1 | // immutable map |
- Java9부터
Map.of()
가 등장하게되는데 이전 코드들에 비해서 상당히 축약되어 보기 편해진건 맞지만 단점이 존재한다.최대 10개
까지 밖에 초기화하지 못하고, 일반 배열처럼,
를 기준으로 나열되있어서 어떤 것이key
인지value
인지 한눈에 잘 들어오지 않게된다. - 그리고 Map.of() 메소드는 immutable한 Map을 생성하기 때문에 mutable한 Map을 생성하고싶다면 Map.of()로 생성한 결과를 Map 인터페이스에 담아서 사용해야한다.
2. Kotlin Map 초기화
1 | // immutable map |
- kotlin에서는 mapOf라는 static 메소드가 존재하고, Pair 인스턴스를 직접 생성해서 Map을 초기화할 수 있다.
- 일반적으로는
to
라는 중위(inflix)함수를 사용해서 초기화한다. - mutable한 map으로 초기화하려면
mapOf()
대신mutableMapOf()
를 사용하면 된다.