T_era
[JAVA] Map에 객체를 value로 하기 위한 메서드 본문
https://t-era.tistory.com/112 해당 문제를 풀다가 value를 ArrayList로 사용하였는데 초기화 할 때 객체생성을 어떻게하나 찾아보다가 알게되었다
Map<String, ArrayList<String>> map = new HashMap<>();
위와같이 사용하는데 Key가 새롭게 생성됐을 때 value를 객체로 생성하거나
ArrayList를 만들어 값을 넣어준 후에 값을 넣어야한다
하지만 매번 ArrayList를 선언하는 것은 비효율적이기 때문에 map에 데이터를 넣는 과정에서 키가 새로생성 될 때만 객체가 생성되는 메서드가 있다
map.computeIfAbsent(Key, mappingFunction)
이 메서드 인데 mappingFunction위치에 람다식을 이용해 진행하게 되면
map.computeIfAbsent("Key", k -> new ArrayList<>()).add("리스트의 값1");
map.computeIfAbsent("Key", k -> new ArrayList<>()).add("리스트의 값2");
이렇게 만들 수 있다
1번째 코드에서는 Key라는 키가 새로 생성되기 때문에 new ArrayList<>()가 호출되어 새로운 객체를 만들고 add를 실행하게된다
2번째 코드에서는 Key라는 키가 이미 있기 때문에 새로운 객체를 호출하지 않고 바로 add를 실행하여 값을 넣게 된다
그래서 map.get("Key")에는 ArrayList가 들어가있고 그 리스트에는 "리스트의 값1", "리스트의 값2"가 들어가 있다
'Programing > Java' 카테고리의 다른 글
| [JAVA] 문법정리 - 2 (0) | 2025.04.15 |
|---|---|
| [JAVA] 문법정리 (0) | 2025.04.15 |
| [JAVA] 힙정렬 구현하기 (0) | 2025.04.03 |
| [JAVA] 병합정렬 구현하기 (0) | 2025.04.02 |
| [JAVA] 퀵정렬 알고리즘 구현하기 (0) | 2025.04.02 |