Can I return several iterators like one? For example in iterator() method maybe I can combine iterators like one?
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class Addresses implements Iterable<Address> {
private final Address main;
private final List<Address> additional;
private final List<Address> verified;
public Addresses(Address main, List<Address> additional, List<Address> verified) {
this.main = main;
this.additional = additional;
this.verified = verified;
}
public Address getMain() {
return main;
}
public List<Address> getAdditional() {
return additional;
}
public List<Address> getVerified() {
return verified;
}
@Override
public Iterator<Address> iterator() {
// return 3 iterators main and additional and verified like one?
return additional.iterator() + verified.iterator() + Collections.singletonList(main).iterator();
}
}
I just need to iterate through all items in both lists and the main address in one cycle but have them separated. For example, I am going to use it like this
User user = ...
Addresses addresses = new Addresses(user.getMainAddress(), user.getAdditionalAddressess(), user.getVerifiedAddressess());
//iterate through addresses and change some fields an each address
user.setMain(addresses.getMain());
user.setAdditional(addresses.getAdditional());
user.setVerified(addresses.getVerified());