본문 바로가기
Backend/JAVA

[JAVA] 자바 Stream 사용 예제

by couque 2023. 3. 25.
반응형

자바8에서 추가되었고 for문을 사용하지 않고 각 요소들을 가져와서 데이터를 처리할 수 있는 기능이다.

기존 for문을 사용하는 것보다 가독성이 좋고 코드를 깔끔하게 작성할 수 있는 반면, 속도는 더 느리다고 한다.

stream은 재사용할 수 없는 특징이 있으며, 아래 stream을 활용한 예제로 알아보자.


# 각 배열 원소의 각각의 길이 구하기

String arr = {"apple", "computer", "coffee", "java"};

int[] res = Arrays.stream(arr).mapToInt(String::length).toArray();
System.out.println(Arrays.toString(res));  // [5, 8, 6, 4]

 

# 배열에서 5보다 큰 숫자의 갯수 구하기

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(Arrays.stream(arr).filter(v -> v > 5).count());  // 5

 

# 배열 원소에 x2 배열 구하기

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(Arrays.toString(Arrays.stream(arr).map(v -> v * 2).toArray()));  // [2,4,6,8,10,,12,14,16,18,20]

 

# 문자열의 중복을 제거 후 다시 문자열로 합친다. 가장 마지막에 공백이 있다.

String str = "ABCDEFG ABC";
String resStr = Arrays.stream(str.split("")).distinct().collect(Collectors.joining());
System.out.println(resStr);  // ABCDEFG

 

# int 배열의 갯수와 배열값의 평균 구하기

int[] arr = {1, 2, 3, 4, 5, 6, 7};
System.out.println(Arrays.stream(arr).count());  // 7
System.out.println(Arrays.stream(arr).average().getAsDouble());  / 4.0

 

# IntStream

  #1. range : 해당 범위를 순회하여 작업한다. 두번째 파라미터값은 포함되지 않는다.

System.out.println(IntStream.range(0, 10).filter(v -> v % 2 == 0).sum());  // 20

#2. rangeClosed : 해당 범위를 순회하여 작업한다. 두번째 파라미터값이 포함된다.

System.out.println(IntStream.rangeClosed(0, 10).filter(v -> v % 2 == 0).sum());  // 30

 

# 짝수 리스트에서 10개 출력하기

Stream<Integer> res = Stream.iterate(0, n->n+2);
List<Stream<Integer>> list = Arrays.asList(res);
res.limit(10).forEach(System.out::println);  // 024681012141618

 

# IntStream 중복제거 후 짝수만 출력하기

IntStream intStream2 = IntStream.of(1,2,2,2,3,3,4,5,6,7,7,7,8,9);
intStream2.distinct().filter(n -> n % 2 == 0).forEach(System.out::print);  // 2468

 

# 문자열 숫자만 배열에 담아 오름차순으로 정렬 int 배열로 반환한다.

String str = “abcd9472efg3918h”;
String[] strArr = str.replaceAll("[a-zA-Z]","").split("");
Arrays.sort(strArr);
System.out.println(Arrays.toString(Arrays.stream(strArr).mapToInt(e -> Integer.parseInt(e)).toArray()));  // [1, 2, 3, 4, 7, 8, 9, 9]
반응형

'Backend > JAVA' 카테고리의 다른 글

[JAVA] 자바 배열 예제  (0) 2023.04.01
[JAVA] StringBuilder 사용 메소드 정리  (0) 2023.03.28
[JAVA] 문자열 정리  (0) 2023.03.22
[JAVA] 주민번호 유효성 검사  (0) 2023.03.19
[JAVA] 금액 단위 콤마 구분하기  (0) 2023.03.18

댓글