У меня есть метод, который я хотел бы изменить:
public Optional<Package> getPackage(String holderID, String packageID){
Holder holder = service.getHolder(holderID);
return holder.getPackages().stream()
.filter(model-> StringUtils.equalsIgnoreCase(packageID,model.getPackageId())).findAny();
}
У держателя есть поле:
List<Package> packages;
В пакете есть поля:
String packageId;
String packageType;
I Меня интересует расширение метода, чтобы он выполнял дополнительный фильтр, если первый приводит к пустому Optional. Есть ли способ фильтровать по packageId, как указано выше, а затем фильтровать по packageType (например, packageType == "type1"), когда первый фильтр приводит к пустому необязательному параметру?
Думаю, в целом я Хотите знать, доступен ли фильтр только в том случае, если он приводит к непустому варианту Optional или Stream ?
Есть ли лучший способ сделать это, чем этот:
public Optional<Package> getPackage(String holderID, String packageID){
Holder holder = service.getHolder(holderID);
Optional<Package> package = holder.getPackages().stream()
.filter(model-> StringUtils.equalsIgnoreCase(packageID,model.getPackageId())).findAny();
if(package.isEmpty()){
package = holder.getPackages().stream()
.filter(model -> StringUtils.equalsIgnoreCase("type1",model.getPackageType()))
.findAny();
}
return package;
}