본문 바로가기

Book88

[독서 기록] 모던 자바 인 액션 4장 스트림 소개, 5장 스트림 활용 4장 스트림 소개 스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형(즉, 데이터를 처리하는 임시 구현 코드 대신 질의로 표현할 수 있다)으로 컬렉션 데이터를 처리할 수 있다. 일단 스트림이 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하자. 또한 스트림을 이용하면 멀티 스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. - 136p 다음은 기존 코드다 List lowCaloricDishes = new ArrayList(); for (Dish dish : menu) {// 누적자로 요소 필터링 if (dish.getCalories() < 400) { lowCaloricDishes.add(dish); } } Collections.sort(lowCalori.. 2023. 1. 8.
[독서 기록] 모던 자바 인 액션 3장 람다 표현식 모던 자바 인 액션 3장 람다 표현식 람다 표현식은 파라미터, 화살표, 바디로 이루어진다. (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()); 람다 파라미터 / 화살표 / 람다 바디 - 89p 여러가지 람다 표현식 (String s) -> s.lenght() // String 형식의 파라미터 하나를 가지며 int를 반환한다. (Apple a) -> a.getWeight() > 150 // Apple 형식의 파라미터 하나를 가지면 boolean을 반환한다. (int x, int y) -> { System.out.prinln(x + y); } // int 형식의 파라미터 두 개를 가지며 리턴값이 없다. () -> 45 // 파라미터가 없으며 .. 2023. 1. 6.
[독서 기록] 모던 자바 인 액션 2장 - 동작 파라미터화 코드 전달하기 다음은 만류에도 불구하고 모든 속성을 메서드 파라미터로 추가한 모습이다. public static List filterApples(List inventory, Color color, int weight, boolean flag) { List result = new ArrayList(); for (Apple apple : inventory){ if (( flag && apple.getColor().equals(color) || ... 형편없는 코드다. 대체 true와 false는 뭘 의미하는 걸까? - 71p 참 또는 거짓을 반환하는 함수를 프레디케이트라고 한다. 선택 조건을 결정하는 인터페이스를 정의하 public interface ApplePredicate { boolean test (Apple app.. 2023. 1. 4.
[독서 기록] 모던 자바 인 액션 1장 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? 모던 자바 인 액션 자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴으로 더 명확하고 간결한 코드를 구현할 수도 있다. 이 책은 함수형 언어의 영감을 받아 자바 8, 9, 10에 추가된 람다, 스트림, 함수형 프로그래밍, 자바 모듈 시스템, 병렬화와 공유 가변 데이터, 동작 파라미터화 등의 주요 기능을 자바 개발자에게 알려준다. 수정처럼 투명한 예제와 꼼꼼한 정보 제공으로 여러분의 노력에 보답할 것이다. 이 책은 『자바 8 인 액션』의 개정판으로서 1, 8, 10, 4, 17, 21장은 신규 추가되거나, 그에 준하는 큰 수정이 있었다. 부록을 뺀 나머지.. 2023. 1. 4.
[독서 기록] 객체지향의 사실과 오해 객체지향의 사실과 오해 『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 널리 퍼져있는 오해는 클래스가 객체지향 프로그래밍의 중심이라는 것이다. 객체지향으로 향하는 첫 걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두 번째 걸음은 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 바라보는 것이다. 세 번째 걸음을 내디딜 수 있는지 여부는 협력에 참여하는 객체들에게 얼마나 적절한 역할과 책임을 부여할 수 있느냐에 달려 있다. 객체지향의 마지막 걸음은 앞에서 설명한 개념들을 프로그래밍 언어라는 틀에 흐트러짐 없이 담아낼.. 2022. 12. 8.