본문 바로가기

Book87

[독서 기록] 모던 자바 인 액션 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.
[독서 기록] 모던 자바 인 액션 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.