본문 바로가기
반응형
SMALL

그룹 스터디 공부(IT 서적)/모던 자바 인 액션23

chapter 5 스트림 활용 4장에서는 스트림을 이용해서 외부 반복을 내부 반복으로 바꾸는 방법을 살펴봤다. 데이터 컬렉션 반복을 명시적으로 관리하는 외부 반복 코드다. List vegetarianDishes = new ArrayList(); for(Dish d:menu){ if(d.isVegetarian()){ vegetarianDishes.add(d); } } 명시적 반복 대신 filter와 collect 연산을 지원하는 스트림 API를 이용해서 데이터 컬렉션 반복을 내부적으로 처리할 수 있다. List vegetarianDishes = menu.stream() .filter(Dish::isVegetarian) .collect(Collectors.toList()); 5.1 필터링 5.1.1 프레디케이트로 필터링 스트림 인터페이스.. 2023. 7. 22.
chapter 4. 스트림 소개 SQL 질의 언어에서는 기대하는 필터링을 어떻게 구현해야 할지 명시할 필요가 없으며 구현은 자동으로 제공한다. 컬렉션으로도 이와 비슷한 기능을 만들 수 있지 않을까? 또한, 멀티코어 아키텍처에서 컬렉션을 병렬처리를 통해 성능을 높이는 방법을 쉽게 제공할 수는 없을까? → 이 질문의 답은 스트림이다. 4.1 스트림이란 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능이다. 다음과 같은 특징을 갖는다 선언형 스트림을 이용하면 선언형(데이터를 처리하는 임시 구현 코드 대신 질의로 표현)으로 컬렉션 데이터를 처리할 수 있다. 더 간결하고 가독성이 좋아짐 조립할 수 있음 filter, sorted, map, collect 같은 여러 빌딩 블록 연산을 연결해서 복잡한 데이터 처리 파이프라인을 만들 수 있다. .. 2023. 7. 21.
chapter 3. 람다 표현식 람다 표현식 더 깔끔한 코드로 동작 구현 및 전달하는 자바 8의 새로운 기능 람다 표현식은 익명 클래스처럼 이름이 없는 함수이면서 매서드를 인수로 전달할 수 있다. 3.1 람다란 무엇인가? 람다 표현식은 매서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 익명 : 보통의 메서드와 달리 이름이 없다. 함수 : 특정 클래스에 종속되지 않는다. 전달 : 메서드 인수로 전달, 변수로 저장 가능 간결성 : 익명 클래스처럼 코드 구현 필요 X 1) 기존 코드 Comparator byWeight = new Comparator() { @Override public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeigh.. 2023. 7. 21.
chaper 2.동적 파라미터화 코드 전달하기 1. 동작 파라미터화란 동작 파라미터화란, 어떻게 실행할지 결정하지 않은 코드 블록을 의미한다. 이 코드블록은 나중에 호출되어 사용되어질 때, 실행됀다. 자주 바뀌는 요구사항에 효과적으로 대응할 수 있음을 의미한다. 나중에 실행될 메서드의 인수로 코드블록을 전달할 수 있고, 결과적으로 코드블록에 메서드의 동작이 파라미터화 되어 전달된다. 2.변화하는 요구사항에 대응 요구사항 기존의 농장 재고목록 어플리케이션에 리스트에서 녹색(green) 사과만 필터링하는 기능을 추가 2.1.1 첫 번째 시도:녹색 사과 필터링 public static List filterGreenApples(List inventory){ List result = new ArrayList(); // 사과 누적 리스트 for(Apple ap.. 2023. 7. 21.
chapter 1. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? 1.1 역사의 흐름은 무엇인가? 자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 예를 들어 사과 목록을 무게순으로 정렬하는 고전적 코드를 자바 8에서는 다음과 같이 작성할 수 있다. // 고전적인 코드 Collections.sort(inventory, new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } }); // Java 8 inventory.sort(comparing(Apple::getWeight)); 자바 8을 이용하면 자연어에 더 가깝게 간단한 방식으로 코드를 구현할 수 있다. 멀티코어 CPU 대중화와 같은 하드웨어직인 변화도 자바 8에 영향.. 2023. 7. 21.
반응형
LIST