Java 스트림의 Peek 기능: 디버깅만을 위한 것이 아닌가?
Java 스트림의 세계에서는 peek() 기능이 종종 연관되어 있습니다. 디버깅으로. 그러나 다른 목적으로 활용될 수 있다면 어떨까요?
시나리오:
각각 사용자 이름, 비밀번호 및 로그인 방법이 포함된 계정 개체 목록이 있다고 가정합니다. 로그인 여부를 확인합니다. 계정에 로그인을 시도하는 소비자 로그인과 계정이 로그인되었는지 확인하는 Predicate LogIn도 있습니다. in.
이를 사용하여 각 계정에 로그인을 시도하고 실패한 계정을 필터링하고 다음과 같이 로그인된 계정을 수집하는 스트림을 구성합니다.
List<account> accounts; //assume it's been setup List<account> loggedInAccount = accounts.stream() .peek(login) .filter(loggedIn) .collect(Collectors.toList());</account></account>
잠재적인 단점:
이 코드는 의도한 대로 작동하는 것처럼 보이지만 이 코드에서 peek()를 사용하면 몇 가지 잠재적인 단점이 있습니다. context.
- 처리 순서: peek()는 요소 처리 순서를 보장하지 않습니다. 스트림이 정렬된 경우 결과 목록은 올바른 순서를 유지하지만 peek 작업은 동시에 임의의 순서로 실행될 수 있습니다.
- 불완전한 처리: peek()가 실행을 트리거하지 않을 수 있습니다. 스트림의 모든 요소 중 터미널 작업에 필요한 요소만 처리합니다. 따라서 터미널 작업이 조기에 처리를 중지하면 peek()도 중지됩니다.
- 구현에 따른 최적화: Count() 및 기타 터미널 작업은 모든 요소의 처리를 방지하는 최적화를 구현할 수 있습니다. . Java 9에서는 이 동작이 변경되어 잠재적으로 예상치 못한 일이 발생할 수 있습니다.
의미:
이러한 단점은 peek()를 순서가 지정된 작업에 주의해서 사용해야 함을 의미합니다. 완전한 처리가 중요합니다.
대안 접근 방식:
peek()의 단점이 바람직하지 않은 경우 대체 접근 방식은 다음과 같습니다.
- 익명 클래스와 함께 filter() 사용: 로그인 작업 실행 필터 조건의 일부로 모든 요소가 처리되고 순서가 일치하는지 확인합니다. 유지됩니다.
- reduced()를 사용하여 로그인된 계정 축적: 목록으로 수집하는 대신 모든 요소가 처리되도록 줄이기()를 사용하여 로그인된 계정을 축적합니다.
결론:
peek()는 디버깅에 유용할 수 있지만 다음 용도로 사용됩니다. 다른 목적은 처리 순서, 불완전한 처리 및 구현별 최적화와 관련된 잠재적인 문제로 인해 신중하게 고려해야 합니다. 대체 접근 방식은 더욱 안정적이고 예측 가능한 결과를 제공할 수 있습니다.
위 내용은 Java Streams의 `peek()` 기능이 디버깅 외에도 적합합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

SpringRetry를 사용할 때 SpringRetry의 @retryable 주석을 사용할 때 사용자 정의 청취자를 올바르게 지정하는 방법 ...

SpringBoot로 @requestbody 주석을 사용하여 비 JSON 형식의 문자열 매개 변수를 수신하십시오. SpringBoot 개발에서 우리는 종종 @requestbody 주석을 사용하여 처리합니다 ...

데이터 동기화를 처리 할 때 핫스팟 데이터 필터링을위한 최적화 전략에 대한 논의는 핫스팟 데이터를 효과적으로 필터링하는 방법이 핵심 문제입니다. 우리의 장면은 : on ...

NACOS 등록 센터 및 OpenFeign Cross-Namespace Service Call이 기사는 NACOS를 레지스트리로 사용할 때 OpenFeign이 다른 운명을 달성 할 수 있는지에 대해 설명합니다 ...

NetTy4를 사용하여 WebSocket 서버를 개발할 때 브라우저가 401 응답을 올바르게 인식하는 방법은 무엇입니까? Netty를 사용하여 WebSocket 서버를 개발할 때는 종종 필요합니다 ...

스프링을 사용한 문제 설명 ...

스프링 프레임 워크에서 SerializableTypeWrapper 클래스의 역할. Spring 프레임 워크의 ResolvableType 클래스에서 종종 SerializableTypeWrapper를 볼 수 있습니다. ...

Springretry에서 @retryable 주석에 대한 청취자를 올바르게 구성하는 방법은 무엇입니까? 봄 사용 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
