Map.getOrDefault()

소만이·2024년 3월 12일
post-thumbnail

Map.getOrDefault()

  • 맵에서 지정된 키에 해당하는 값이 존재하는 경우 해당 값(value)을 반환하고,
    만약 해당 키가 존재하지 않는 경우에는 지정된 기본값(defaultValue)을 반환한다.
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)를 받아들이며, 지정된 요소를 순서대로 포함하는 리스트를 생성한다.

0개의 댓글