Можно ли переписать этот метод через Stream API?
Как переписать этот метод через Stream API? Тут получается for each в for each , как считать просто коллекцию через стрим я понимаю, а касательно таких вариаций не попалось ни 1 примера, такое практикуется ?
public void getCurrency(String currency) throws FileNotFoundException {
Main p = new Main();
for (Params elem : p.parseJson().getOrgs()) {
for (Securities elem1: elem.getSecurities()) {
if(currency.equals(elem1.getCurrency()))
//System.out.println("Название " + elem1.name + " Код " + elem1.code + " " + elem1.currency);
System.out.println("В валюте " + currency + " торгуются бумаги " + elem1.getName()
+ " Код " + elem1.getCode() + " " + elem1.getCurrency() + " id "
+ elem1.getId());
}
}
}
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Так думаю если ваши getOrgs и getSecurities это списки
p.parseJson().getOrgs().stream().forEach( elem -> {
elem.getSecurities().stream().forEach( elem1-> {
if(currency.equals(elem1.getCurrency()))
//System.out.println("Название " + elem1.name + " Код " + elem1.code + " " + elem1.currency);
System.out.println("В валюте " + currency + " торгуются бумаги " + elem1.getName()
+ " Код " + elem1.getCode() + " " + elem1.getCurrency() + " id "
+ elem1.getId());
}
}
Автор решения: lmageo
→ Ссылка
Вообщем вот так получилось переписать у меня этот цикл, может кому пригодится
p.parseJson().stream()
.map(elem -> {
return elem.getSecurities();
})
.flatMap(List::stream)
.forEach(elem -> {
if(currency.equals(elem.getCurrency()))
//System.out.println("Название " + elem1.name + " Код " + elem1.code + " " + elem1.currency);
System.out.println("В валюте " + currency + " торгуются бумаги " + elem.getName()
+ " Код " + elem.getCode() + " " + elem.getCurrency() + " id "
+ elem.getId());
});