개념 스트림에서는 스트림 요소들을 정렬할 수 있는 sorted라는 메서드를 제공한다. sorted 메서드는 파라미터에 따라 2가지 버전이 존재한다. sorted() 메서드 스트림 요소의 타입에 따라 기본적으로 제공되는 정렬 방식을 사용한다. Number나 String 같은 경우는 오름차순, 커스텀 클래스의 경우 Comparable로 구현한 방식을 따른다. 커스텀 클래스의 경우 Comparable 인터페이스를 구현하지 않았을 경우 최종 연산 이후에 ClassCastException이 발생할 수 있다. 일반 스트림과 기본형 특화 스트림 모두에 제공되며 기본형 특화 스트림의 경우 해당 primitive 타입에 맞는 정렬 방식이 적용된다. sorted(Comparator) 메서드 스트림 요소들을 함수형 인터페이..
개념 스트림은 파라미터로 제공되는 함수(Function과 관련된 함수형 인터페이스)를 적용해서 스트림의 각 값을 다른 스트림으로 만든 다음에 모든 스트림을 하나의 스트림으로 연결하는 기능을 수행하는 flatMap이라는 메서드를 제공한다. 추상적으로 설명하면 차원을 낮추는 개념이라고 생각된다. (ex. Stream -> Stream) 위의 예시의 경우 일반 map 메서드를 사용할 경우 String[] 배열 자체가 다른 객체로 변환되는데 flatMap을 사용하면 String[] 내부의 값들 자체를 다른 객체로 변환하는 것이 가능하다. 여기서 말하는 함수는 map의 Function과 약간의 차이가 있다. flatMap에서 사용되는 Function은 T는 동일하지만 R이 Stream이다. 즉, 일반 제네릭 타입..
개념 스트림은 파라미터로 제공되는 함수(Function관련된 함수형 인터페이스)를 적용해서 기존 요소를 새로운 요소로 매핑시키는 map이라는 메서드를 제공한다. 기존 값을 변경한다는 개념보다는 새로운 값을 만든다는 개념이므로 변환(transforming) 에 매핑(mapping) 이라는 단어를 사용한다. map의 기본 개념은 위의 이미지와 같다. 또한 map은 반환하는 형태에 따라 여러 메서드가 존재한다. mapToInt, mapToLong, mapToDouble, mapToObj가 다음에 해당한다. 일반 스트림과 기본형 특화 스트림은 위의 메서드 중에서 타입에 따라 3가지씩 가지고 있고 없는 메서드는 결국 자기 자신 타입의 스트림을 반환하는 것이기 때문에 map 메서드가 그 역할을 하는 것이다. 예를 ..
개념 스트림의 요소를 선택하거나 스킵하는 다양한 방법에 대해 살펴보자. Predicate를 이용하는 방법, 스트림의 처음 몇 개의 요소를 무시하는 방법, 특정 크기로 스트림을 줄이는 방법 등 다양한 방법을 이용해 효율적으로 이런 작업을 수행할 수 있다. 이러한 작업을 슬라이싱이라고 한다. takeWhile 메서드 Java 9에 추가된 메서드 Predicate를 파라미터로 받아서 해당 Predicate가 false를 반환할 때까지의 요소를 취하는 메서드다. 얼핏보면 filter 메서드와 유사해보이지만, filter 메서드가 전체 스트림에 대한 Predicate를 판단하는 반면 takeWhile은 Predicate가 false를 반환하는 순간 나머지 요소를 전부 버린다. 아주 많은 요소를 가진 스트림에서는 ..
개념 스트림은 고유 요소로 이루어진 스트림을 반환하는 중간 연산인 distinct 메서드를 지원한다. 고유 여부는 객체의 equals와 hashCode 메서드를 통해 판단한다. 예제 아래 예제에서 사용되는 내용들은 다양한 상황을 연출하기 위해서 임의로 만들어진 내용이므로 특정 속성에 대해서 왜 저 타입이 사용되었는지 의문을 가지지 말자! 예제 코드에서 사용되고 있는 스펙 Java 15 preview (record라는 새로운 클래스 개념을 사용하기 위해서 해당 프리뷰 버전을 사용. 하위 버전의 경우는 일반 클래스를 생성한 후 getter를 만들고 사용하면 됨) - 참고 JUnit 5 Gradle 6.7 소스 코드 기본 데이터 생성 public record Song(int no, String title, S..
개념 Predicate를 파라미터로 받아서 Predicate가 true인 모든 요소를 포함하는 스트림을 반환하는 메서드 예제 아래 예제에서 사용되는 내용들은 다양한 상황을 연출하기 위해서 임의로 만들어진 내용이므로 특정 속성에 대해서 왜 저 타입이 사용되었는지 의문을 가지지 말자! 예제 코드에서 사용되고 있는 스펙 Java 15 preview (record라는 새로운 클래스 개념을 사용하기 위해서 해당 프리뷰 버전을 사용. 하위 버전의 경우는 일반 클래스를 생성한 후 getter를 만들고 사용하면 됨) - 참고 JUnit 5 Gradle 6.7 소스 코드 기본 데이터 생성 public record Person(int no, String name, int age, Nation nation, int gend..
- Total
- Today
- Yesterday
- IntelliJ
- java14
- Stream API
- flatMapToDouble
- modern java
- #배열 #array #map 함수
- 자바
- 중간 연산
- Java8
- flatMapToInt
- 충북 콕! 콕!
- 변경사항
- 람다
- 계획
- #예제 #example #가계부 #Account Book
- 목표
- 개발자
- mapToObj
- #React #ReactJS #리액트
- java
- import문
- 익명 클래스
- lambda
- 다짐
- 스트림
- flaMap
- 회고
- 토이 프로젝트
- flatMapToLong
- jdk14
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |