IntStream.rangeClosed(1,20).asLongStream().mapToObj 에 대한 해석
- 소스
List<SampleDTO> list = IntStream.rangeClosed(1,20).asLongStream().mapToObj(i-> {
SampleDTO dto = SampleDTO.builder()
.sno(i)
.first("F")
.last("Last.."+i)
.regTime(LocalDateTime.now())
.build();
return dto;
}).collect(Collectors.toList());
IntStream.rangeClosed(1,20) => 1~20의 Int를 발생시킴.
.asLongStream() => 1~20으로 발생되는 Int를 Long으로 변환 시킴
.mapToObj() => 나오는 스트림(Long)을 Obj형태로 반환, 그러나 여기서는 매개변수로 "i-> {}" 이런식의 람다식을 사용하였기 때문에 i를 사용하여 진행되는 람다식? 람다함수? ({}안에 내용)의 결과를 Obj형태로 변환을 의미
.collect(Collectors.toList()); => 그렇게 20개의 dto가 Obj 형태로 나온것을 Collectors를 이용하여 List의 형태로 모은다
5.3 asDoubleStream(), asLongStream(), boxed() 메소드
asDoubleStream() 메소드는 IntStream의 int 요소 또는 LongStream의 long 요소를 double 요소로 타입 변환해서 DoubleStream 을 생성합니다.
마찬가지로 asLongStream() 메소드는 IntStream의 int 요소를 long 요소로 타입 변환해서 LongStream을 생성합니다.
boxed() 메소드는 int, long, double 요소를 Integer, Long, Double 요소로 박싱해서 Stream을 생성합니다.
출처: https://jang8584.tistory.com/237 [개발자의 길]