반응형
매핑(mapping)은 중간 처리 기능으로 스트림의 요소를 다른 요소로 대체하는 작업을 말한다.
1. flatMapXXX() 메소드
flatMapXXX() 메소드는 요소를 대체 하는 복수 개의 요소들로 구성된 새로운 스트림을 리턴한다.
public static void main(String[] args){
List<String> inputList1 = Arrays.asList("java8 lamda", "stream mapping");
inputList1.stream()
.flatMap(data -> Arrays.stream(data.split(" "))) // 요소별로 단어를 뽑아 스트림 재생성
.forEach(System.out::println);
System.out.println();
List<String> inputList2 = Arrays.asList("10, 20, 30", "40, 50, 60");
inputList2.stream()
.flatMapToInt(data -> {
String[] strArr = data.split(",");
int[] intArr = new int[strArr.length];
for(int i=0; i<strArr.length; i++){
intArr[i] = Integer.parseInt(strArr[i].trim()); // 숫자를 뽑아 숫자 스트림으로 재생성
}
return Arrays.stream(intArr);
})
.forEach(System.out::println);
}
java8
lamda
stream
mapping
10
20
30
40
50
60
2. mapXXX() 메소드
mapXXX() 메소드는 요소를 대체 하는 요소로 구성된 새로운 스트림을 리턴한다.(flatMap은 복수개이나, map은 1:1 이다.)
public static void main(String[] args){
List<Worker> workerList = Arrays.asList(
new Worker("강성현", 30),
new Worker("깡냉", 20),
new Worker("까랭", 10)
);
workerList.stream()
.mapToInt(Worker::getAge) // IntStream을 반환한다.
.forEach(System.out::println);
}
30
20
10
3. asDoubleStream(), asLongStream(), boxed() 메소드
asDoubleStream()
은 IntStream의 int 또는 LongStream의 long 요소를 double 요소로 타입 변환해서 DoubleStream을 생성한다.asLongStream()
또한 IntStream의 int 요소를 long 요소로 타입 변환해서 LongStream을 생성한다.boxed()
메서드는 int, long, double 요소를 Integer, Long, Double 요소로 박싱해서 Stream을 생성한다.Stream
은 객체 요소를 처리하는 스트림이기 때문에 Integer, Long, Double을 다룰 수 있다.
public static void main(String[] args){
int[] intArray = {1, 2, 3, 4, 5};
IntStream intStream = Arrays.stream(intArray);
intStream.asDoubleStream() // double stream 생성
.forEach(System.out::println);
System.out.println();
intStream = Arrays.stream(intArray);
intStream.boxed() // boxing Stream<Integer> 생성
.forEach(data -> System.out.println(data.intValue()));
}
1.0
2.0
3.0
4.0
5.0
1
2
3
4
5
반응형
'프로그래밍 노트 > JAVA' 카테고리의 다른 글
[JAVA] Stream Looping(루핑, peek(), forEach()) (0) | 2019.06.17 |
---|---|
[JAVA] Stream 정렬(sorted()) (0) | 2019.06.17 |
[JAVA] Stream의 필터링(distinct(), filter()) (0) | 2019.06.17 |
[JAVA] Stream pipeline(스트림 파이프라인) (0) | 2019.06.17 |
[JAVA] 스트림(Stream)의 종류 (0) | 2019.06.17 |