반응형
자바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 |
댓글