5.1 필터링 5.1.1 프레디케이트로 필터링 스트림 인터페이스는 filter 메서드를 지원함. filter 메서드는 프레디케이트를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환함. // 프레디케이트 필터링 List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(Collectors.toList()); 5.1.2 고유 요소 필터링 스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원함. // 고유 요소 필터링 List numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); numbers.stream().filter(i -> i % 2 == 0).disti..
4.1 스트림이란 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있음. 또한 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있음. // 자바 7 기준 List lowCaloricDishes = new ArrayList(); for (Dish dish : Dish.menu) { if (dish.getCalories() < 400) { lowCaloricDishes.add(dish); } } // 칼로리 적은 순으로 정렬 Collections.sort(lowCaloricDishes, new Comparator() { @Override public int compare(Dish o1, Dish o2) { return Int..
3.1 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있음. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있음. 람다의 특징 익명 : 보통의 메서드와 달리 이름이 없음 함수 : 특정 클래스에 종속되지 않으므로 함수라고 부름. 전달 : 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있음 간결성 : 익명 클래스처럼 많은 코드를 작성할 필요 없음 람다는 세 부분으로 이루어짐. // (파라미터 리스트) -> 람다 바디 (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()) 파라미터 리스트 화살표 람다 바디 람다는 표현하는 방식이 ..
변화하는 요구사항은 소프트웨어 엔지니어링에서 피할 수 없는 문제. 동작 파라미터화를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있음. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미함. => '어떠한 동작을 해라'는 것을 파라미터로 전달하는 것. 하지만 동작 파라미터화를 추가하려면 쓸데없는 코드가 늘어나는데, 이는 자바 8 람다 표현식으로 해결함. 2.1 변화하는 요구사항에 대응하기 2.1.1 첫 번째 시도 : 녹색 사과 필터링 농장의 사과목록에서 녹색 사과만 필터링하는 기능을 추가하는 경우 // 1. 초록 사과를 필터링 하는 메소드 public static List filterGreenApples(List inventory) { List result = new ..
1.1 역사의 흐름은 무엇인가? 자바 8에서는 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공함. 자바 8에서 제공하는 새로운 기술 스트림 API 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 자바 8은 데이터베이스 질의 언어에서 표현식을 처리하는 것처럼 병렬 연산을 지원하는 스트림이라는 새로운 API를 제공함. 스트림을 이용하면 에러를 자주 일으키며 멀티코어 CPU를 이용하는 것보다 비용이 훨씬 비싼 키워드 synchronized를 사용하지 않아도 됨. 메서드에 코드를 전달하는 기법을 이용하면 새롭고 간결한 방식으로 동작 파라미터화를 구현할 수 있음. 메서드에 코드를 전달하는 자바 8 기법은 함수형 프로그래밍에서 위력을 발휘함. 1.2 왜 아직도 자바는 변화하는가? 자바 8은..
- Total
- Today
- Yesterday
- 스택/큐
- 해시
- 논블로킹
- 블로킹
- 프로그래머스 Level 2
- Synchronous
- Handler Interceptor
- 필터
- non-blocking
- 프로그래머스 Level 3
- Asynchronous
- 인터셉터
- 핸들러 인터셉터
- a
- blocking
- http://www.nextree.co.kr/p6960/
- 비동기
- 동기
- Filter
- 프로그래머스
- 프로그래머스 Level 1
- 코딩테스트 고득점 Kit
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |