본문 바로가기
반응형

Book24

[모던 자바 인 액션] 6장. 스트림으로 데이터 수집 이전 장에서 공부했듯이 스트림은 엘리먼트를 소비하는 중간 연산과 최종 결과를 도출하는 최종연산으로 구분됩니다. 그 중에서 collect 최종 연산에 사용할 수 있는 리스트 변환 세트 변환 등의 기능이 담긴 인터페이스는 Collector 인터페이스 입니다. 여러 자료 구조가 담고 있는 Collection 인터페이스와 구분이 필요합니다. 컬렉터란? 간편하게 원하는 형태로 최종 결과를 산출해주는데 도움을 주는 인터페이스. 샘플 데이터 public class Dish { private final String name; private final boolean vegetarian; private final int calories; private final Type type; public Dish(String nam.. 2021. 9. 28.
[모던 자바 인 액션] 5장. 스트림 활용 이 장에서는 스트림 API가 지원하는 다양한 연산을 살펴본다. 필터링 스트림의 요소를 선택하는 방법, 즉 프레디케이트 필터링 방법과 고유 요소만 필터링하는 방법을 배운다, 프레디케이트로 필터링 filter 메서드는 프레디케이트를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. IntStream intStream = IntStream.of(3, 7, 1, 6, 2, 13, 13, 7, 10, 13, 26); intStream.filter(number -> number >= 7) .boxed() .forEach(System.out::println); // 7, 13, 13, 7, 10, 13, 26 고유 요소 필터링 고유 요소로 이루어진 스트림을 반환하는 필터링이다. 고유 요소.. 2021. 9. 28.
[모던 자바 인 액션] 4장. 스트림 소개 우리가 기대한 컬렉션 연산은? 첫번째, 무엇을 원하는지는 명시하되, 세부 방법은 명시하지 않는다. 무엇을 원하는지는 명시를 하되 세부적인 명세는 피하는 것이다! 저자가 예로 들기를, SELECT NAME FROM dishes WHERE calorie menu.getCalorie() >=300) .sorted(comparing(Menu::getCalorie)) // default: Descending .map(Menu::getName) .collect(toList()); // list => [짜장면, 생연어] 위 코드에 있는 filter,, sorted, map. collect와 같은 연산은 고수준 빌딩 블록으로 이루어져 있기 때문에 특정 스레딩 모델이 제한되지 않고 어떤 상황에서든 사용할 수 있다. 결과.. 2021. 9. 28.
[모던 자바 인 액션] 3장. 람다 표현식 public class StreamPerformanceTest { private static final intTEST_MAX_RANGE= 30_000_000; private static Listlist= new ArrayList(); public static void main(String[] args) { init("init", () -> IntStream.rangeClosed(1,TEST_MAX_RANGE).boxed().collect(toList())); test("for-loop", (List list) -> { int result = 0; for (int each : list) { result += each; } }); test("int-stream", () -> { IntStream.rangeC.. 2021. 9. 28.
[모던 자바 인 액션] 2장. 동작 파라미터화 간단한 예시를 통해 동작 파라미터화가 왜 필요하고 어떻게 코드 개선될 수 있는지 보자. Niniz 객체를 담고 있는 리스트에서 원하는 니니즈를 찾는 프로그램을 개발한다고 가정하겠다. Niniz 클래스는 아래와 같다. /* Niniz.java */ public class Niniz { private String name; private String color; private String classification; public Niniz(String name, String color, String classification) { this.name = name; this.color = color; this.classification = classification; } public String getName(.. 2021. 9. 28.
[모던 자바 인 액션] 1장. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? 개요 멀티코어 CPU 대중화와 같은 하드웨어적인 변화가 자바8에 영향을 미쳤다. CPU 속도 증가에 한계점에 이르며 코어 수를 높이는 쪽으로 하드웨어가 발전해갔는데 이러한 변화에 발맞춰 자바 또한 변화해간 것이다. 또한 빅데이터(테라바이트 이상의 데이터셋)라는 도전에 직면하면서 멀티코어 서버나 클러스터를 이용하여 이를 효율적으로 처리 해야 됐다. 그러나 자바 8 이전의 자바로는 충분히 대응하기가 어려웠다. 물론 자바가 병렬 처리를 위한 API를 완전히 제공하지 않아왔던 것은 아니다. 자바 5에서는 쓰레드 풀, 병렬 실행 컬렉션을 도입했고 자바7에는 포크/조인 프레임워크을 제공했으나 개발자가 사용하기가 쉽지 않았다. 이에 반해 자바8은 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공한다. .. 2021. 9. 28.
반응형