Wookim

Java Stream(1) 본문

programming language/Java

Java Stream(1)

개발자인 경우 2022. 1. 10. 18:19

Stream 생성

  1. 배열을 stream으로
  2. stream 조건 걸기
  3. stream 주의점 1
  4. stream 주의점 2
  5. 배열 slice
  6. 연속된 stream 생성
  7. 난수 생성

위 순서대로 예제 코드를 살펴 보자.

 

1. 배열을 stream으로

// 배열
String[] arr = new String[]{"1", "2", "3", "4", "5"};

// 배열 -> 스트림화
Stream<String> stream = Arrays.stream(arr);

// 스트림 순회
stream.forEach(System.out::print);

-- 1 2 3 4 5

2. stream 조건 걸기

// 배열
String[] arr = new String[]{"1", "2", "3", "4", "5"};

// 배열 -> 스트림화
Stream<String> stream = Arrays.stream(arr);

if(stream.anyMatch(s -> s.equals("1"))){
	System.out.println("true");
}else{
	System.out.println("false");
}

-- true

3. 생성한 stream은 한번만 사용가능

// 배열
String[] arr = new String[]{"1", "2", "3", "4", "5"};

// 배열 -> 스트림화
Stream<String> stream = Arrays.stream(arr);

stream.forEach(System.out::print);

stream.forEach(System.out::print); -> 에러

-- 에러 내용
Exception in thread "main" java.lang.IllegalStateException: 
stream has already been operated upon or closed

4. 다시 사용하려면 새로 생성

// 배열
String[] arr = new String[]{"1", "2", "3", "4", "5"};

// 배열 -> 스트림화
Stream<String> stream = Arrays.stream(arr);
stream.forEach(System.out::print);

System.out.println();

stream = Arrays.stream(arr);
stream.forEach(System.out::print);

-- 12345
-- 12345

5. 배열 Slice

// 배열
String[] arr = new String[]{"1", "2", "3", "4", "5"};

// 처음 인덱스 포함, 마지막 인덱스 미포함
Stream stream = Arrays.stream(arr, 1, 4); // inclusive strat idx, exclusive end idx

stream.forEach(System.out::print);

-- 234

6. 지정된 범위이 연속된 정수 Stream

  /** IntStream 사용*/
  IntStream iStream = IntStream.range(1, 4);
  iStream.forEach(System.out::print);
  System.out.println();

  /** LongStream 사용 */
  LongStream lStream = LongStream.range(1, 4);
  lStream.forEach(System.out::print);
  System.out.println();

--1234
--1234

7. 난수 생성 (테스트 코드 작성 시 유용 할듯)

/** 특정 타입의 난수 생성 (테스트 코스 생성 시 용이) */
IntStream rStream = new Random().ints(4);
rStream.forEach(System.out::print);
System.out.println();

-- -551132546-3799458324435741041029603102

 

 

Reference

http://tcpschool.com/java/java_stream_intermediate

'programming language > Java' 카테고리의 다른 글

java Stream 최종연산 (3)  (0) 2022.01.21
Java Stream 중개 연산 (2)  (0) 2022.01.19
Java Stream (0)  (0) 2022.01.10
Spring 예외 처리 패턴  (2) 2022.01.03
spring application 실행 환경 분리 (프로파일)  (0) 2021.07.09
Comments