본문 바로가기

책/모던 자바 인 액션

8장 컬렉션 API 개선

❗ 본 포스팅은 타이핑 공부법으로 작성하였습니다. 그렇기에 부족한 점이 존재할 수 있습니다.


8.1 컬렉션 팩토리

  • 자바8에서는 List, Set, Map의 컬렉션 팩토리 메소드를 제공한다. (ex. (collection.of))
  • 팩토리 메서드의 인자는 가변인자가 아니며 개수를 늘리거나 하지 못한다.

8.2 리스트와 집합 처리

  • List에서 인자로 Predicate를 받고 만약 해당 Predicate가 true일 경우 해당하는 원소를 삭제하는 메소드가 존재한다.(removeIf)
  • List에서 인자를 다른 값으로 교체하는 메소드가 존재한다. 다만 특정 요소에 대해서만 교체할 수는 없다.(replaceAll)

8.3 맵 처리

  • forEach 메소드를 통해 키와 값 모두 한번에 받아 처리할 수 있다.
  • sort를 통해 정렬할 수 있다.
  • getOfDefault 메소드로 만약 존재하지 않는 키일 경우 특정 값을 반환하도록 할 수 있다.(이때 null도 반환이 가능하다.)
  • value에 대해 원하는 상황에 맞게 원하는 연산을 할 수 있다.(computeIfAbsent, computeIfPresent, compute)
  • map.remove에서 인자로 키하나만 줄 수도 있고 키와 벨류 모두 줄수도 있다. 이때 키 하나만 이용해서 삭제할 경우 키가 존재하지 않는다면 null을 반환하고 키와 벨류 모두 있을경우 boolean형식으로 반환된다.
  • 두개의 map을 합칠수 있으며 만약 중복된 원소가 있을경우 이를 어떻게 처리할지를 merge 메소드로 정해줄 수 있다.
  • 병렬로 연산해도 괜찮은 ConcurrentHashMap이 있다. 이때 이 map에 있는 원소끼리는 관련이 없어야 한다.