on
[java] Stream api 사용하기 - 01
[java] Stream api 사용하기 - 01
반응형
java 1.8부터 사용가능한 stream api 를 사용해보도록 하겠습니다.
스트림의 경우 기본적으로 아래 순서로 진행됩니다.
stream 생성 ->중간연산(여러번 가능, stream을 반환함) -> 최종연산
-> 대상컬렉션.stream().중간연산.최종연산
1. stream으로 List의 데이터 출력하기
strings 변수명으로 생성된 List를 출력하는 구문입니다.
중간 연산없이 바로 최종연산으로 데이터를 출력합니다.
//데이터 초기화 List strings = new ArrayList(){{ add("A"); add("B"); add("C"); add("d"); }}; strings.stream().forEach(System.out::println);
전체 데이터가 출력된 것을 알 수 있음.
* 여기서 stream() 을 생성하고 최종연산을 한경우, 해당 strem을 다시 사용할 수 없음.
아래와 같이 Stream 을 생성한 후 strStream에 대해 최종연산을 2번 진행하면 2번째 진행하는 연산에서 오류가 발생함.
//데이터 초기화 List strings = new ArrayList(){{ add("A"); add("B"); add("C"); add("d"); }}; Stream strStream = strings.stream(); strStream.forEach(System.out::println); //아래 구문은 오류 발생 strStream.forEach(System.out::println);
exception 발생
->
2. 기본형 배열을 stream으로 변환하기
기본 형 스트링 배열을 선언 하고(String[]) 해당 배열을 스트림으로 변환한 결과이다.
Arrays.stream() 을 통해 스트림 변환이 가능하다.
String[] abc = {"a","b","c"}; Stream stream = Arrays.stream(abc); stream.forEach(System.out::println);
3. 기본형 타입의 스트림
무한 스트림을 생성할 경우에는 사이즈제한을 무조건 해줘야 한다.
특정 범위
-> IntStream.range(1, 5) //끝 자리 숫자 포함하지 않음
-> IntStream.rangeClosed(1, 5); //끝 자리 숫자 포함.
System.out.println("IntStream 출력"); IntStream intStream1 = IntStream.range(1, 5); //[1,2,3,4] 5를 포함하지 않음 IntStream intStream2 = IntStream.rangeClosed(1, 5); //[1,2,3,4,5] 5를 포함 IntStream intStream3 = new Random().ints(); //무한 스트림 생성( 무한으로 임의의 숫자가 생성됨) intStream3.limit(5).forEach(System.out::println); //무한 스트림을 출력할때는 limit으로 사이즈 제한을 해줘야함. //Long type도 가능함. System.out.println("LongStream 출력"); LongStream longStream = LongStream.rangeClosed(1, 5); // [1, 2, 3, 4, 5] longStream.forEach(System.out::println);
4. Stream 생성 iterate , generate
//연산가능! Stream stream = Stream.iterate(0,n->n+4); //stream.forEach(System.out::println); //무한 스트림 발생 ( 출력하면 무한히 계속 실행됨) stream.limit(5).forEach(System.out::println); //limit 으로 제한 [0,4,8,12,16] //파라미터는 없고 출력만함! Stream gen = Stream.generate(()-> 10); gen.limit(5).forEach(System.out::println);//[10,10,10,10,10]
반응형
from http://vmpo.tistory.com/110 by ccl(A) rewrite - 2021-09-14 19:01:43