9
This depends on the contract you have between your API and the user.
Personally, I like a contract that makes the Object manage its collections, i.e., instantiating them on creation, and ensuring that they can't be set to null via a setter - possibly by providing methods to manage the collection rather than setting the collection itself.
i.e., addFoo(Foo toAdd) instead of setFooSet(Set set), and so on.
But it's up to you.