Я не знаю всех возможностей Stream API.
Моя задача: у меня есть список строк с URL-адресами, и у меня есть другой список моих пользовательских объектов с двумя методами
String videoFromUrl(String url);
boolean support(String url);
Я должен выбрать URL из первого списка, который будет поддерживаться одним экземпляром второго списка, а затем вернуть преобразованный URL
Мой код:
@Override
protected String videoSourceFromDocument(final Document document) {
final List<String> hrefs = ...;
for (final String href : hrefs) {
final Optional<VideoDownloader> videoDownloader = this.videoDownloaders/*this is my second list*/
.stream()
.filter(dwnldr->dwnldr.support(href))
.findFirst();
if(videoDownloader.isPresent()){
return videoDownloader.get().videoFromUrl(href);
}
}
this.logger().warn("Url {} doesn't has video source",document.baseUri());
throw new IllegalArgumentException();
}
Это лучший способпереписать его с помощью Stream API?