ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컬렉션 API 개선
    Java/모던자바인액션요약 2022. 9. 6. 00:01
    728x90

    거의 모든 자바 애플리케이션에서 컬렉션을 사용합니다.

    하지만 컬렉션을 에러를 유발하는 여러 단점들이 존재합니다.

     

    자바 8,9에 추가되어 우리의 삶을 편리하게 만들어 줄 새로운 컬렉션 API 기능들을 배워보는 시간입니다.

     

    리스트 만들기

    List<String> friends = new ArrayList<>();
    friends.add("element1");
    friends.add("element2");
    friends.add("element3");

    Arrays.asList() 팩토리 메서드를 이용하면 코드를 간결하게 줄일 수 있다.

    List<String> friends = Arrays.asList("element1","element2","element3");

     

    마찬가지로 List.of 팩토리 메서드를 이용해서도 간단하게 리스트를 만들 수 있습니다.

     

    비슷한 메서드로는 Set.of   Map.of 메서드가 존재하고 간편하게 집합, 맵을 만들 수 있습니다.

     

    하지만 새로운 요소를 삭제하거나 추가하는 작업은 불가능합니다.

     

    이러한 점이 단점이 될 수 있고 장점이 될 수 있습니다.(불변성을 어느정도 부여, 하지만 내부 값은 바꿀 수 있음)

     

    리스트와 집합을 처리하는 메서드

    removeIf : List, Set에서 사용하며 predicate를 만족하는 요소를 제거합니다.

    replcaAll : List에서 사용하며 UnaryOperator 함수를 이용해 요소를 바꿉니다.

     

     

    Map을 처리하는 메서드

    forEach : 키와 값을 반복하면서 확인하는 작업을 간편하게 구현하게 해줍니다.

    Entry.comparingByValue : value를 기준으로 정렬

    Entry.comparingByKey : key를 기준으로 정렬

    getOrDefault : NPE를 방지하며 null체크를 하지 않게 해 줍니다.

    computeIfAbsent : 제공된 키에 해당하는 값이 없으면 키를 이용해 새 값을 계산하고 맵에 추가

    computeIfPresent : 제공된 키가 존재하면 새 값을 계산하고 맵에 추가

    replaceAll : BiFunction을 적용하여 각 항목의 값을 교체

    merge : 두 개의 맵을 합칠 때 사용, 중복된 키를 어떻게 병합할지 BiFunction을 인수로 받음

     

    개선된 ConcurrentHashMap

    concurrentHashMap 클래스는 동시성 친화적인 자료구조로 특정 부분만 잠궈 동시 추가, 갱신 작업을 지원합니다.

    HashTable 버전에 비해 읽기 쓰기 연산 성능이 월등합니다.

    HashMap은 비동기로 동작합니다.

     

    foreach : 주어진 행동을 실행

    reduce : 리듀스 함수를 이용해 결과로 합침

    search : 널이 아닌 값을 반환할때까지 (키,값) 쌍에 함수를 적용

    mappingCount : size대신에 사용하는 맵의 개수를 반환하는 메서드 (int 범위를 넘어서는 상황에 대처할 수 있음)

     

    'Java > 모던자바인액션요약' 카테고리의 다른 글

    병렬 데이터 처리와 성능  (0) 2022.08.29
    스트림으로 데이터 수집  (0) 2022.08.23
    스트림 활용  (0) 2022.08.18
    스트림 소개  (0) 2022.08.15
    람다 표현식  (0) 2022.08.10

    댓글

Designed by Tistory.