Set default value for remaining size of list by use of Java 8 and Stream
I have written a method which will return the size 16 List every time. If the input List has size less than 16, the remaining list object will be filled with default values. Is there any way to remove the if and for condition from the enrichCardAddress
method? Please try to ignore the class name Address
. Actually it should be Account
.
@Component
public class AccountService {
public List<Address> enrichCardAddress(List<CardAccountDetail> cardAccountDetails) {
if (CollectionUtils.isEmpty(cardAccountDetails)) return Collections.emptyList();
List<Address> addresses = cardAccountDetails.stream().map(AccountService::buildAddress).collect(Collectors.toList());
if (addresses.size() < 16) {
int accountCounts = addresses.size();
for (; accountCounts < 16; accountCounts++) {
addresses.add(buildDefaultAddress());
}
}
return addresses;
}
private Address buildDefaultAddress() {
Address address = new Address();
address.setPrimaryAccount("NO");
address.setAction("NONE");
address.setAccountStatus("TEST_STATUS");
address.setAccountType("TEST_ACCOUNT_TYPE");
address.setAccountDescription("");
return address;
}
private static Address buildAddress(CardAccountDetail cardAccountDetail) {
Address address = new Address();
address.setAccountDescription(cardAccountDetail.getAccountDescription());
address.setAccountNumber(cardAccountDetail.getAccountNumber());
address.setAccountStatus(cardAccountDetail.getAccountStatus());
address.setAccountType(cardAccountDetail.getAccountType());
address.setAction(cardAccountDetail.getAction());
return address;
}
}
user3789184
- 417
- 1
- 4
- 14
lang-java