[英]java streams: accumulated collector
目前,這是我的代碼:
Iterable<Practitioner> referencedPractitioners = this.practitionerRepository.findAllById(
Optional.ofNullable(patient.getPractitioners())
.map(List::stream)
.orElse(Stream.of())
.map(Reference::getIdPart)
.collect(Collectors.toList())
);
如您所見,我正在使用this.practitionerRepository.findAllById(Iterable<String> ids)
,以便使用與數據庫的單一通信來獲取所有內容。
我試圖用這個來改變它:
Optional.ofNullable(patient)
.map(org.hl7.fhir.r4.model.Patient::getPractitioners)
.map(List::stream)
.orElse(Stream.of())
.map(Reference::getIdPart)
.collect(????????);
如何在collect
方法this.practitionerRepository.findAllById(Iterable<String> ids)
用於自定義收集器?
請記住,我需要一次獲取所有實體。 我不能一個一個地得到它們。
您可以為此使用Collectors.collectingAndThen(Collector<T,A,R> downstream, Function<R,RR> finisher)
專用收集器。
practitionerRepository::findAllById
以從List<String>
轉換為Iterable<Practitioner>
例子:
Iterable<Practitioner> referencedPractitioners = Optional.ofNullable(patient)
.map(Patient::getPractitioners)
.map(List::stream)
.orElseGet(Stream::of)
.map(Reference::getIdPart)
.collect(Collectors.collectingAndThen(toList(), practitionerRepository::findAllById));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.