본문 바로가기

JAVA11

자바8 - 8. 리팩토링, 테스팅, 디버깅 리팩토링, 테스팅, 디버깅 1. 가독성과 유연성을 개선하는 리팩토링 간결성, 유연성 1.1 코드 가독성 개선 가독성이 좋다 : 어떤 코드를 다른 사람도 쉽게 이해할 수 있다. 자바8에서 제공하는 코드 가독성에 도움을 주는 기능 코드의 장황함을 줄여서 쉽게 이해할 수 있는 코드를 구현할 수 있다. 메서드 레퍼런스와 스트림 API를 이용해서 코드의 의도를 쉽게 표현할 수 있다. 1.2 익명 클래스를 람다 표현식으로 리팩토링하기 ex) 익명 클래스 사용하는 이전 코드 Runnable r1 = new Runnable() { public void run() { System.out.println("Hello"); } }; ex) 람다 사용 Runnable r2 = () -> System.out.println("He.. 2018.10.02
자바8 - 7. Stream - 4 병렬 데이터 처리와 성능 포크/조인 프레임워크 스트림을 이용하면 순차 스트림을 병렬 스트림으로 자연스럽게 바꿀 수 있음. 1. 병렬 스트림 컬렉션에 parallelStream을 호출하면 병렬 스트림이 생성 ex) 모든 숫자 합계 메서드 public static long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .reduce(0L, Long::sum); } ex) 전통 자바 예시 public static long iterativeSum(long n) { long result = 0; for( long i = 1L; i i +1) .limit(n) .parallel() .reduce(0L, Long::sum); } 병렬 .. 2018.10.02
자바8 - 6. Stream - 3 스트림으로 데이터 수집 ex) 통화별로 트랜잭션을 그룹화한 코드(명령형 버전) Map transactionByCurrencies = new HashMap(); for (Transaction transaction : transactions) { Currency currency = transaction.getCurrency(); List transactionsForCurrency = transactionsByCurrencies.get(currency); if(transactionsForCurrency == null) { transactionsForCurrency = new ArrayList(); transactionByCurrencies.put(currency, transactionsForCurrency);.. 2018.10.02
자바8 - 5. Stream - 2 Stream 멀티 스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있음. ex) 저 칼로리 요리 반환 후 칼로리 기준으로 요리 정렬 (기존 코드) // 400칼로리보다 작은 요리 선택 List lowCaloricDishes = new ArrayList(); for(Dish d: menu) { if(d.getCalories() < 400) { lowCaloricDishes.add(d); } } // 익명 클래스로 요리 정렬 (칼로리 순) Collections.sort(lowCaloricDishes, new Comparator() { public int compare(Dish d1, Dish d2) { return Integer.compare(d1.getCalories(), d2.getCa.. 2018.10.02