Java의 Stream 함수는 Java 8에 도입된 새로운 기능입니다. 컬렉션 및 배열과 같은 데이터 세트를 처리하는 완전히 새로운 방법을 제공합니다. Stream은 스트림 작업을 수행하는 기능적 프로그래밍 방법을 제공하고 코드 작성을 크게 단순화합니다. 이 기사에서는 Java의 Stream 함수를 사용하여 스트리밍 작업을 수행하는 방법을 살펴보겠습니다.
1. 스트림 기능이란 무엇인가요?
스트림 기능은 Java 8에 도입된 새로운 기능입니다. 이는 코드를 단순화하기 위해 스트림 작업을 수행하는 기능적 프로그래밍 방법을 제공합니다. Stream 함수는 필요한 기능을 달성하기 위해 컬렉션 및 배열과 같은 데이터 구조의 요소에 대해 작업하는 데 사용할 수 있습니다.
스트림 기능에는 중간 작동과 종료 작동이라는 두 가지 작동 모드가 있습니다. 중간 작업은 여러 번 수행될 수 있지만 종료 작업은 스트림 처리를 중지하고 결과나 부작용을 반환합니다. 동시에 Stream에는 병렬 처리 기능도 있습니다.
2. 스트림 작업에 Stream 함수를 사용하세요
컬렉션의 stream() 메서드나 배열의 Stream.of() 메서드를 통해 스트림 객체를 얻을 수 있습니다. 예:
List<Integer> list = Arrays.asList(1, 2, 3); Stream<Integer> stream1 = list.stream(); // 通过list对象获取stream对象 Stream<Integer> stream2 = Stream.of(1, 2, 3); // 通过Stream.of()方法获取stream对象
Stream은 필터링, 매핑, 슬라이싱 및 기타 작업을 수행할 수 있는 다양한 중간 작업 방법을 제공합니다. 이러한 작업 방법을 하나씩 살펴보겠습니다.
(1) filter() 메서드: 필터 요소
List<Integer> list = Arrays.asList(1, 2, 3, 4); Stream<Integer> stream = list.stream(); stream.filter(i -> i%2 == 0).forEach(System.out::println); // 输出2和4
(2) map() 메서드: 맵 요소
List<String> list = Arrays.asList("Java", "Python", "Ruby"); Stream<String> stream = list.stream(); stream.map(String::toLowerCase).forEach(System.out::println); // 输出java, python, ruby
(3) flatMap() 메서드: 평면화 flow
List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6)); Stream<List<Integer>> stream = list.stream(); stream.flatMap(Collection::stream).forEach(System.out::println); // 输出1, 2, 3, 4, 5, 6
(4) independent() 메서드: 중복 제거
List<Integer> list = Arrays.asList(1, 2, 3, 1, 2, 3); Stream<Integer> stream = list.stream(); stream.distinct().forEach(System.out::println); // 输出1, 2, 3
(5) sorted() 메서드: sort
List<Integer> list = Arrays.asList(3, 2, 1); Stream<Integer> stream = list.stream(); stream.sorted().forEach(System.out::println); // 输出1, 2, 3
(6)limit() 메서드: 요소 수 제한
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = list.stream(); stream.limit(3).forEach(System.out::println); // 输出1, 2, 3
(7) Skip( ) 메소드: 요소 건너뛰기
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = list.stream(); stream.skip(2).forEach(System.out::println); // 输出3, 4, 5
(8) peek() 메소드: 요소 추가
List<Integer> list = Arrays.asList(1, 2, 3); Stream<Integer> stream1 = list.stream(); Stream<Integer> stream2 = stream1.peek(System.out::println); stream2.count(); // 输出1, 2, 3
Stream은 스트림 처리 결과를 반환할 수 있는 다양한 종료 연산 메소드를 제공합니다. 이러한 작업 방법을 하나씩 살펴보겠습니다.
(1) forEach() 메서드: 스트림의 요소 반복
List<Integer> list = Arrays.asList(1, 2, 3); Stream<Integer> stream = list.stream(); stream.forEach(System.out::println); // 输出1, 2, 3
(2) count() 메서드: 요소 수 계산
List<Integer> list = Arrays.asList(1, 2, 3); Stream<Integer> stream = list.stream(); stream.count(); // 输出3
(3) toArray() 메서드: 스트림의 요소를 배열로 변환
List<Integer> list = Arrays.asList(1, 2, 3); Stream<Integer> stream = list.stream(); Object[] array = stream.toArray(); System.out.println(Arrays.toString(array)); // 输出[1, 2, 3]
(4) Reduce() 메서드: 스트림의 요소 줄이기
List<Integer> list = Arrays.asList(1, 2, 3); Stream<Integer> stream = list.stream(); int result = stream.reduce(0, (x, y) -> x + y); System.out.println(result); // 输出6
(5) Collect() 메서드: 스트림의 요소 수집
List<Integer> list = Arrays.asList(1, 2, 3); Stream<Integer> stream = list.stream(); List<Integer> newList = stream.collect(Collectors.toList()); System.out.println(newList); // 输出[1, 2, 3]
Stream 함수는 병렬 스트림 연산 기능도 제공하며, parallel() 메서드를 통해 스트림을 병렬 스트림으로 변환할 수 있습니다. 병렬 스트림은 멀티 코어 CPU의 처리 능력을 최대한 활용하고 프로그램 실행 효율성을 향상시킬 수 있습니다. 예:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = list.parallelStream(); stream.forEach(System.out::println); // 输出1, 2, 3, 4, 5
3. 요약
Stream 함수는 Java 8의 새로운 기능으로, 컬렉션 및 배열과 같은 데이터 세트를 처리하는 새로운 방법을 제공합니다. Stream 기능의 중간 작업 및 종료 작업을 통해 필터링, 매핑, 중복 제거, 정렬, 요소 수 제한, 요소 건너뛰기, 요소 추가 및 기타 작업을 쉽게 수행할 수 있습니다. 동시에 병렬 스트림 작업을 통해 멀티 코어 CPU의 처리 능력을 최대한 활용하고 프로그램의 실행 효율성을 향상시킬 수 있습니다. 위의 소개는 Stream 기능의 일부일 뿐이며, Stream 기능의 다양한 동작 방식을 적용하여 복잡한 비즈니스 로직을 구현해야 합니다.
위 내용은 스트림 작업을 위해 Java에서 스트림 기능을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!