분류 전체보기
-
챕터[12] 새로운 날짜와 시간 API모던자바인액션 2020. 10. 21. 16:03
서론 사람 및 기계가 이해할 수 있는 날짜와 시간 표기 방법 시간 PST : 태평양 표준시(워싱턴, 켈리포니아) CST : 중부 표준시(미국 중부, 멕시코, 중앙아메리카) EST : 동부 표준시(미국 동부, 캐나다) GMT : 그리니치 표준시(런던, 협정 세계시와 동일한 시간) UTC : 협정세계시(세계 공통 표준시) CET : 중부 유럽 표준시(유럽, 북아프리카) EET : 동유럽 표준시(동유럽 일부, 북아프리카, 중동 일부 지역) 개요 이번 챕터에서는 이러한 날짜 API 제공을 해주구나 정도? (개인적으로 입력한 날짜를 받고 저장하거나, 해당 년도가 윤년인지 판단... 정도만 다뤄봐서 이번 챕터는 아하 정도로 넘어가면 좋을꺼 같다고 생각이든다. 물론 내 머리가 이정도밖에 생각을 못하니 그러겠지만) 쟈..
-
-
챕터[10] 도메인 전용 언어 DSL모던자바인액션 2020. 10. 21. 16:01
서론 DSL 패턴 및 기법 스트림의 API의 특성인 메서드 체인을 보통 자바의 루프의 복잡합 제어와 비교해 유창함을 의미하는 *플루언트 스타일 이라고 한다. * 플루언트 인터페이스 소프트웨어 공학에서 플루언트 인터페이스는 메소드 체이닝에 상당 부분 기반한 객체 지향 API 설계 메소드이며, 소스 코드의 가독성을 산문과 유사하게 만드는 것이 목적이다. 특히 인터페이스 안에 도메인 특화 언어를 작성한다. 에릭 에반스와 마틴 폴러가 처음 만든 용어이다. DSL : 특정 비즈니스 도메인의 문제를 해결하려고 만든 언어이다. 자바에서는 도메인을 표현할 수 있는 클래스와 메서드 집합이 필요하다. DSL이란 특정 비즈니스 도메인을 인터페이스로 만든 API라고 할 수 있다. - DSL은 범용 프로그래밍 언어가 아님 ( ..
-
-
챕터[8] 컬렉션 API 개선모던자바인액션 2020. 10. 21. 15:59
서론 1. List, Set 메소드 removeIf : 프레디케이트를 만족하는 요소를 제거한다. List, Set 구현 상속받은 모든 클래스에서 사용가능 replaceAll : List에서 사용할 수 있으며 UnartOperator 함수를 이용하여 요소를 바꿈 sort : List 인터페이스에서 제공하는 정렬 기능 2. Map 메소드 맵Key, Value 기준으로 정렬 Entry.comparingByValue Entry.comparingByKey getOrDefault 메서드 맵Key로 값을 찾으려 할때 Key가 없으면 NullPointException이 발생하는걸 예방하여 기본값을 출력해주는 메서드 컬렉션.getOrDefault("찾으려는 Key", "기본값"); Map.getOrDefault("찾으려..
-
-
챕터[6] 스트림 그룹화모던자바인액션 2020. 10. 21. 15:58
서론 스트림을 이용한 데이터 그룹화 // 최대 칼로리 Dish 찾기 Comparator dishD = Comparator.comparingInt(Dish::getCalories); Optional oD = specialMenu.stream().collect(Collectors.maxBy(dishD)); 요약연산 : 스트림에 있는 객체의 숫자 필드의 합계, 평균 등을 반환해주기 위해 리듀싱 기능을 사용하는 연산 // Dish 총 칼로리 구하기 // summingInt 에서는 리듀스 연산이 이루어지며 초기값은 0이 된다. int totalCal = specialMenu.stream().collect(Collectors.summingInt(Dish::getCalories)); // 칼로리 평균 구하기 // a..
-
챕터[5] 스트림 데이터 수집모던자바인액션 2020. 10. 21. 15:57
서론 스트림을 활용하여 데이터 편집 일반 스트림 필터링 // 칼로리 정렬 List filteredMenu = specialMenu.stream() .filter(dish -> dish.getCalories() i % 2 == 0) .distinct() .forEach(System.out::println); 스트림 축소 // 축소 List limitDish = specialMenu.stream() .filter(dish -> dish.getCalories() > 0) .limi..