자바8 4

모던 자바 인 액션 - CH06. 스트림으로 데이터 수집(2)

6.4 분할 분할은 분할 함수라 불리는 프레디케이트를 분류 함수로 사용하는 특수한 그룹화 기능이다. 분할 함수는 불리언을 반환하므로 맵의 키 형식은 Boolean이다. -> 그룹화 맵은 최대 (참 or 거짓) 두 개의 그룹으로 분류됨 // 채익 요리와 채식이 아닌 요리로 분류 Map partitionedMenu = menu.stream().collect(partitioningBy(Dish::isVegetarian)); // 분할 함수 // 채식 요리를 얻기 List vegitarianDishes = partitionedMenu.get(true); // 프레디케이트로 필터링한 다음에 별도의 리스트에 결과를 수집해도 같은 결과를 얻을 수 있다. List vegitarianDishes = menu.stream..

JAVA 2023.09.12

모던 자바 인 액션 - CH04. 스트림 소개

4.1 스트림이란 무엇인가? 스트림(Streams)은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 다음 예제는 저칼로리 요리명을 반환하고, 칼로리를 기준으로 요리를 정렬하는 자바7 코드이다. List lowCaloricDishes = new ArrayList(); for(Dish dish: menu) { if(dish.getCalories() < 400) { lowCaloricDishes.add(dish); } } Collections.sort(lowCaloricDishes, new Comparator() { public int compare(Dish ..

JAVA 2023.08.15

모던 자바 인 액션 - CH02. 동작 파라미터화 코드 전달하기

들어가기에 앞서.. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다.이 코드 블록은 나중에 프로그램에서 호출한다. 즉, 코드 블록의 실행은 나중으로 미뤄진다. 나중에 실행될 메서드의 인수로 코드 블록을 전달할 수 있다. 결과적으로 코드 블록에 따라 메서드의 동작이 파라미터화 된다. 따라서, 변화하는 요구 사항에 유연하게 대응할 수 있다. 그런데, 동작 파라미터화를 추가하려면 쓸데없는 코드가 늘어난다. 자바 8은 이 문제를 람다 표현식으로 해결한다. 2.1 변화하는 요구사항에 대응하기 하나의 예제를 선정한 다음에 예제 코드를 점차 개션하면서 유연한 코드를 만드는 모범사례로 설명할 것이다. 기존의 농장 재고목록 애플리케이션에 리스트에서 녹색 사과만 필터링하는 기능을 추가한다..

JAVA 2023.07.29

모던 자바 인 액션 - CH01. 자바 8, 9, 10,11 : 무슨 일이 일어나고 있는가?

1.1 역사의 흐름은 무엇인가? 가장 큰 변화는 자바 8에서 일어남 멀티코어 CPU 대중화가 영향을 미침 -> 자바8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용을 바탕으로 탄생 스트림 API - 병렬 연산을 지원 메서드 코드를 전달하는 기법 - 새롭고 간결한 방식으로 동작 파라미터화를 구현 가능 인터페이스의 디폴트 메서드 자바 8은 함수형 프로그래밍에서 위력을 발휘한다. 1.2 왜 아직도 자바는 변화하는가? 특정 분야에서 장점은 가진 언어는 다른 경쟁 언어를 도태시킨다. 1.2.1 프로그래밍 언어 생태계에서 자바의 위치 이전에 자바는 객체지향 모델 덕분에 대중적인 프로그래밍 언어로 성장할 수 있었다. 하지만 이후에, 빅데이터를 효과적으로 처리할 필요성이 커졌다. 이전의 자바로는 충분히 대응할 수 없었..

JAVA 2023.07.25