본문 바로가기

반응형

모던 자바 인 액션

Chapter 8 컬렉션 API 개선 Arrays.asList() 팩토리 메서드를 통해 리스트를 생성할 수 있다. List friends = Arrays.asList("Raphael", "Olivia", "Thibaut"); 단, 고정 크기의 리스트를 생성했기에 요소 추가, 삭제가 불가능하다. 만약 friends.add("test")로 추가할 경우 UnsupportedOperationException 예외가 발생한다. 이처럼 자바 9에서 작은 리스트, 집합, 맵을 쉽게 만들 수 있도록 팩토리 메서드를 제공한다. 1) 리스트 팩토리 - List.of (크기 변경 불가능) List friends = List.of("Raphael", "Olivia", "Thibaut"); 2) 집합 팩토리 - Set.of (크기 변경 불가능) Set friend.. 더보기
Chapter 7 병렬 데이터 처리와 성능 스트림으로 데이터 컬렉션 관련 동작을 손쉽게 병렬 처리할 수 있다. 병렬 스트림 병렬 스트림은 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림이다. ParallelStream을 호출하여 병렬 스트림을 생성할 수 있다. 순차 스트림을 병렬 스트림으로 변환하기 (ParallelStream 적용) @Test @Description("1~n까지 숫자의 합을 구하기(직렬 & 병렬)") void parallelStreamTest7_1() throws Exception{ // given int n = 100; Long sequentialResult = Stream.iterate(1L, i->i+1) .limit(n) .reduce(0L, Long::sum); // when Long par.. 더보기
Chapter6 스트림으로 데이터 수집 컬렉터란 무엇인가? collect로 다양한 요소 누적 방식을 인수로 받아서 스트림의 결과 리듀싱 연산기능을 수행할 수 있다. > 고급 리듀싱 기능을 수행할 수 있다. - collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의할 수 있다는 점이 컬렉터의 강점임. Collectors에서 제공하는 메서드의 기능 3가지 1. 스트림 요소를 하나의 값으로 리듀스하고 요약 2. 요소 그룹화 3. 요소 분할 1. 리듀싱과 요약 1) counting 팩토리 메서드를 통해 개수를 구할 수 있다. @Test @Description("메뉴 리스트 개수 구하기") void collectTest6_2_0() throws Exception { // given setMenu(); // when long strea.. 더보기
Chapter3 람다 표현식 람다 표현식 : 메서드로 전달할 수 있는 익명 함수를 단순화 한 것 [기존의 코드] Comparator byWeight = new Comparator() { @Override public int compare(Apple o1, Apple o2) { return o1.getWeight().compareTo(o2.getWeight()); } }; [람다를 적용한 코드] Comparator byWeight = (Apple o1, Apple o2) -> o1.getWeight().compareTo(o2.getWeight()); ※ 람다 표현식은 return 을 함축하고 있음으로 return 명시 X 람다는 어디에 사용할까? > 람다는 함수형 인터페이스 (많은 디폴트 메소드를 갖고 있더라도 추상 메소드가 오직 1.. 더보기

반응형