Map<Integer, List<Issue>> mapList = new HashMap<>();
mapList.getOrDefault(Object key, List<Issue> defaultValue)
->
List<Issue> newIssueList = mapList.getOrDefault(localDateTime.getMonthValue(), null);
// 이 코드의 의미는 localDateTime.getMonthValue() 의 값인 키가 존재하는 경우 해당 값을 반환하고 키가 존재하지 않는 경우에는 지정된 기본값 즉, null 값을 받는다는 것이다.
if (newIssueList == null) {
//여기에서 null값이라는 의미는 localDateTime.getMonthValue() 의 값인 키가 존재하지 않는 다는 것이다.
따라서 mapList에 해당 key를 넣고 그 key에 해당하는 value값을 mapList에 넣는다.
--> mapList.put(localDateTime.getMonthValue(),Collections.singletonList(issue));
} else {
//여기를 탔다는 것은 localDateTime.getMonthValue() 의 값인 키가 존재한다는 뜻.
그래서 기존에 있던 newIssueList로 새 list인 replaceList를 생성 후,
거기에 새로운 issue를 넣고 mapList의 localDateTime.getMonthValue()의 value값에 replaceList를 바꿔넣는 과정이다.
List<Issue> replaceList = new ArrayList<>(newIssueList);
replaceList.add(issue);
mapList.replace(localDateTime.getMonthValue(), replaceList);
}
*참고
Collections.singletonList(issue)는 주어진 요소 하나로 구성된 리스트를 생성하는 코드이다.
List.of() 와 비슷한 개념의 메서드이다.
List.of() 메서드는 지정된 요소들로 구성된 불변(immutable) 리스트를 생성한다. 이 메서드는 가변 인수(varargs)를 받아들이며, 지정된 요소를 순서대로 포함하는 리스트를 생성한다.