자바 8 Stream Api 의 맵 과 flatMap 조작 방법


1.머리말
자바 8 은 매우 유용 한 Stream API 를 제공 하여 집합 을 편리 하 게 조작 할 수 있다.오늘 우 리 는 두 개의Stream중간 조작map(Function<? super T, ? extends R> mapper)flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)을 토론 한다.
2.map 조작map작업 은 흐름 속 의 요 소 를 다시 가공 하여 새로운 흐름 을 형성 하 는 것 이다.이것 은 개발 에 매우 유용 하 다.예 를 들 어 우 리 는 한 학생 이 집합 하 는데 우 리 는 그 중에서 학생 의 나 이 를 추출 하여 학생 의 연령 분포 곡선 을 분석 해 야 한다.
자바 8 에 놓 기 전에 우 리 는 새로운 집합 을 통 해 학생 들 의 집합 을 통 해 요소 중의 연령 속성 을 소비 해 야 한다.현재 우 리 는 매우 간단 한 흐름 식 조작 을 통 해 이 수 요 를 완성 했다.
설명도:

대응 하 는 의사 코드:

//    
 List<Integer> ages=studentList.stream().map(Student::getAge).collect(Collectors.toList());
3.flatMap 조작
위의 예 를 통 해map조작 은 매우 이해 하기 쉬 울 것 이다.그럼flatMap뭐 하 는 거 예요?이렇게 해서 우 리 는 위의 예 를 바 꾸 어 반 단위 라면 모든 반 아래 의 모든 학생 들 의 나 이 를 추출 하여 학생 들 의 연령 분포 곡선 을 분석 할 것 이다.이때 우 리 는 위의 방법 을 사용 해도 괜 찮 습 니까?

List<List<Student>> studentGroup= gradeList.stream().map(Grade::getStudents).collect(Collectors.toList());
위의 한 차례 의 조작 을 통 해 우 리 는 각 반 의 학생 집합List<List<Student>>만 얻 을 수 있다.우 리 는 또 순환 을 끼 워 넣 어야 학생 들 의 연령 데 이 터 를 얻 을 수 있어 서 매우 불편 하 다.우리 가 모든 학생 들 의 집합List<Students>으로 돌아 갈 수 있다 면 훨씬 편리 할 것 이다.맞습니다!flatMap해결 할 수 있어!

// flatMap    List<Students> map     
 List<Integer> ages = grades.stream().flatMap(grade -> grade.getStudents().stream()).map(Student::getAge).collect(Collectors.toList());
위의 위조 코드 에서 보 듯 이 우 리 는flatMap를 사용 하여 모든 학생 을 한데 모 았 다.그리고 추출 연령map을 사용 합 니 다.flatMap와 달리mapmap추출 속성 만 흐름 에 넣 고,flatMap 은 먼저 속성 을 추출 하여 비교적 작은 흐름 에 넣 은 다음 에 모든 흐름 을 하나의 흐름 으로 합 친다.모래 가 모여 탑 이 되 는 느낌 이 든다.
그림 을 한 장 더 그 려 서 이 해 를 깊이 하 다.

4.총화map조작 과flatMap조작 이 익숙 해 지면 데이터 흐름 의 조작 문 제 를 간편 하 게 해결 할 수 있다.지식 을 넓 혀 보 세 요.사실은 자바 8 에 Stream 뿐만 아니 라 이 두 가지 조작 이 존재 합 니 다.사실은Optional<T>에 도 이 두 가지 조작 이 존재 하 는데 역할 이 많 지 않 습 니 다.
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 자바 8 Stream Api 의 맵 과 flatMap 조작 방법 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기