コードベースに次のコードがありますが、これをより機能的な方法でリファクタリングするのに少し苦労しています。アイデアは人のアドレスIDを見つけることです。以下のコードを参照してください:機能コードへの手続き型Javaコードのリファクタリング
public Integer findAddressId(String name) {
List<Person> persons = getPersons(name);
Integer addressId = -1;
for (Person person : persons) {
List<Address> addresses = findAddresses(person);
for (Address address : addresses) {
if (livesAtAddress(person, address)) {
addressId = address.getId();
}
}
}
if(addressId > 0) {
return addressId;
} else {
throw new RuntimeException("Cannot find address for person " + name);
}
}
これらは、いくつかのヘルパーメソッドです:
private boolean livesAtAddress(Person person, Address address) {
return false;
}
private List<Address> findAddresses(Person person) {
return null;
}
private List<Person> getPersons(String name) {
return null;
}
それは私が探しているものとほとんど同じようです。私はflatMap/filterコンボで苦労していました。かなりいいです、ありがとう! –