자바9 데이터 컬렉션의 반복 처리 - 스트림(Stream) 스트림이란? 데이터 컬렉션 반복 처리를 간결하게 하면서, 데이터의 병렬 처리를 쉽게 제공하는 기능 5.1 스트림의 유용한 기능들 요소가 많이 포함된 컬렉션 처리의 성능을 높이기 위해서는 멀티코어를 활용해 병렬로 컬렉션의 요소를 처리해야 합니다. 하지만 병렬 처리 코드를 구현하는 것은 매우 어렵고, 디버깅 또한 복잡한 절차입니다. 이런 문제점을 해결하기 위해 자바 언어 설계자들이 스트림이라는 것을 만들었습니다. 우선 스트림이 사용되기 전에 사용되었던 코드를 살펴보겠습니다. List thinBooks = new ArrayList(); for (Book book : bookshelf) { if (book.getPage() < 500) { thinBooks.add(book); } } Collections.sor.. 2023. 9. 26. 함수형 인터페이스를 통한 람다의 활용 다양한 함수형 인터페이스 3.1 Predicate @FunctionalInterface public interface Predicate { boolean test(T t); default Predicate and(Predicate 2023. 9. 24. 간결한 코드를 만드는 법❓- 람다 표현식 💡람다 표현식이란? 익명 함수를 단순화하여 파라미터 리스트, 바디, 반환 형식을 가지는 표현식 간결한 코드를 위한 람다 활용 2.1 람다의 구조 // 익명 클래스의 한계 List scienceBooks = filterBooks(bookshelf, new BookThickPredicate() { public boolean test(Book book) { return Science.equals(book.getCategory()); } }); 익명 클래스의 한계로, 지난 장에서 개선된 코드조차 가독성이 떨어지는 문제가 발생했습니다. 그러나 람다를 활용하면 놀랍게도 코드의 의미를 해치지 않는 선에서 간결성을 더할 수 있습니다. (Book book1, Book book2) -> book1.getPage().com.. 2023. 9. 24. 동작 파라미터화2 Predicate란? 참 또는 거짓을 변환하는 함수 1. 변화하는 요구사항에 대응하는 법 1.3 선택 조건을 결정하는 프레디케이트 정의 public interface BookPredicate { boolean test(Book book); // boolean 값을 반환하는 메서드 } 이제 해당 인터페이스를 구현하는 다양한 프레디케이트를 정의할 수 있습니다. public class BookThickPredicate implements BookPredicate { public boolean test(Book book) { return book.getPage() >= 500; } } public class BookScienceCategoryPredicate implements BookPredicate { pu.. 2023. 9. 24. 이전 1 2 3 다음