# 람다(Lambda)
장점
- 코드가 간결함
- 병렬처리 가능
단점
- 가독성이 떨어질수 있음
- 호출이 까다로움
(매개변수...) -> {실행 코드};
매개변수는 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합니다. 매개 변수의 이름은 개발자가 자유롭게 설정하는 것이 가능하고 타입도 별도로 첨부하지 않아도 됩니다.
# 스트림(Stream)
다음 블로그들을 참고하면 훨씬 이해하기 편합니다.
http://www.tcpschool.com/java/java_stream_creation
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
https://ryan-han.com/post/dev/java-stream/
자바의 정석 - 스트림(Stream) | Integerous DevLog
자바의 정석 - 스트림(Stream) 2018/11/29 자바의 정석(남궁성 저) 2권 학습내용 정리 1. 스트림(Stream) 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았
ryan-han.com
스트림은 크게 3가지 단계로 나눌 수 있습니다.
- 스트림 생성
- 스트림 중간연산
- 스트림 최종연산
가장 기초적으로 스트림을 생성하는 방법은 값을 직접 Stream 안에 넣어주는 방식입니다.
Stream<String> stream = Stream.of("JAVA", "HTML", "JAVASCRIPT", "CSS");
of()를 사용하면 타입에 맞는 값들을 넣을 수 있습니다.
//1
String[] krr = {"JAVA", "HTML", "JAVASCRIPT", "CSS"};
Stream<String> stream2 = Stream.of(krr);
//2
String[] drr = {"JAVA", "HTML", "JAVASCRIPT", "CSS"};
Stream<String> stream2 = Arrays.stream(krr);
이렇게 배열을 통해서 넣는 것도 가능합니다.
다음은 Collection인 List에 넣는 방법입니다.
ArrayList<Integer> list = new ArrayList<>();
list.add(4);
list.add(0);
list.add(7);
list.add(3);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println);
4
0
7
3
Stream 내부에는 기본 타입인 int, long, double 형을 저장할 수 있는 배열에 관한 스트림이 별도로 정의되어 있습니다.
이러한 스트림은 java.util.stream 패키지의 IntStream, LongStream, DoubleStream 인터페이스로 각각 제공됩니다.
특히 IntStream과 LongStream 인터페이스 내부에는 range()와 rangeClosed() 메소드 들이 저장되어 있습니다.
IntStream stream = IntStream.range(1, 4);
stream.forEach(System.out::println);
System.out.println();
IntStream stream1 = IntStream.rangeClosed(2, 5);
stream1.forEach(System.out::println);
1
2
3
2
3
4
5
다음은 while(true) 처럼 특정 패턴으로 무한히 반복하고 싶을때 사용하는 메서드입니다.
IntStream stream = Stream.iterate(2, n -> n + 2).limit(5);
2
4
6
8
10
iterate는 조건에 맞춰 무한히 반복해 주는 메서드 입니다. 괄호 안에 처음 나오는 2는 초기값을 의미하고 콤마 뒤에 나오는 조건에 맞춰 초깃값부터 무한히 반복되게 됩니다. 마지막에 입력한 .limit(5)는 반복되는 값을 최대 5번으로 제한하라는 의미입니다.
'JAVA > Enum,Annotation,Stream,람다' 카테고리의 다른 글
스트림(Stream) 중간 연산에 대해 알아보자 (0) | 2022.05.22 |
---|---|
열거형(Enum)과 어노테이션(Annotation)에 대해 배워보자 (0) | 2022.05.19 |