본문 바로가기

Book88

[독서 기록] 모던 자바 인 액션 10장 람다를 이용한 도메인 전용 언어 모던 자바 인 액션 10장 람다를 이용한 도메인 전용 언어 Collections.sort(persons, comparing(Person::getAge).thenComparing(Person::getName)); 나이 정렬 + 이름 알파벳 정렬 - 332p 한개의 메서드 호출 체인으로 거래 주문 정의하기 Order order = forCustomer("BigBank") .buy(80) .stock("IBM") .on("NYSE") .at(125.00) .sell(50) .stock("GOOGLE") .on("NASDAQ") .at(375.00) .end(); 메서드 체인 만들기 public class MethodChainingOrderBuilder { public final Order order = new.. 2023. 1. 10.
[독서 기록] 모던 자바 인 액션 9장 리팩터링, 테스팅, 디버깅 모던 자바 인 액션 9장 리팩터링, 테스팅, 디버깅 일반적으로 코드 가독성이 좋다는 것은 '어떤 코드를 다른 사람도 쉽게 이해할 수 있음'을 의미한다. 즉 코드 가독성을 개선한다는 것은 우리가 구현한 코드를 다른 사람이 쉽게 이해하고 유지보수할 수 있게 만드는 것을 의미한다. - 294p 익명 클래스를 람다 표현식으로 리팩터링 Runnable r1 = new Runnable() { public void run(){ System.out.println("hello"); } } Runnable r2 = () -> System.out.println("hello"); - 295p 람다 표현식을 메서드 참조로 리팩터링 Map dishesByCaloricLevel = menu.stream() .collect( gro.. 2023. 1. 10.
[독서 기록] 모던 자바 인 액션 8장 컬렉션 API 개선 List friends = new ArrayList(); friends.add("R"); friends.add("O"); List friends = Arrays.asList("R, "O"); 하지만 문제는 불변 객체로 생성된다는 점이다. 변경 시도시엔 UnsupportedOperationException 발생 ! - 276p List 인터페이스를 조금 더 살펴보면 List.of의 다양한 오버로드 버전이 있다는 사실을 알 수 있다. static list of(E e1, E e2, E e3, E e4) static list of(E e1, E e2, E e3, E e4 E e5) 왜 다음처럼 다중 요소를 받을 수 있도록 자바 API를 만들지 않은 것인지 궁금할 것이다. static List of(E... e.. 2023. 1. 9.
[독서 기록] 모던 자바 인 액션 7장 병렬 데이터 처리와 성능 단순 더하기 연산을 병렬 스트림으로 처리하기 public long parallelSum(long n) { return Stream.iterate(1L, i->i + 1) .limit(n) .parallel() .reduce(0L, Long::sum); } 리듀싱 연산으로 스트림의 모든 숫자를 더한다. 마지막으로 리듀싱 연산으로 생성된 부분 결과를 다시 리듀싱 연산으로 합쳐서 전체 스트림의 리듀싱 결과를 도출한다. - 243p 내부 반복을 이용하면 명시적으로 다른 스레드를 사용하지 않고도 스트림을 병렬로 처리할 수 있다. 간단하게 스트림을 병렬로 처리할 수 있지만 항상 병렬 처리가 빠른 것은 아니다. 병렬 소프트웨어 동작 방법과 성능은 직관적이지 않을 때가 많으므로 병렬 처리를 사용했을 때 성능을 직접 측.. 2023. 1. 9.
[독서 기록] 모던 자바 인 액션 6장 스트림으로 데이터 수집 통화별로 트랜잭션을 그룹화한 코드 List transactions = Arrays.asList( new Transaction(), new Transaction(), new Transaction() ); Map transactionsByCurrencies = new HashMap(); for (Transaction transaction : transactions){ Currency currency = transaction.getCurrency(); List transactionsForCurrency = transactionsByCurrencies.get(currency); if (transactionsForCurrency == null) { transactionsForCurrency = new ArrayL.. 2023. 1. 8.