所以..我有这个类,用户,并且任何用户都有一组书籍,我想定义这些类之间的类和层次结构,所以如果我在两个用户之间建立联合,结果,我想要有一个新用户,他的书集将是一个用户的书和另一个用户的书之间的联合。
提前致谢
您可以简单地在User
类中提供一个静态方法,调用unionUser(User first, User second)
它以两个User
实例作为参数并返回一个User
带有联合集的新实例Book
,这将通过调用该Set#unionAll()
方法来完成。
public class User {
private Set<Book> books; //provide accessors
...
public static User unionUser(User first, User second) {
User result = new User();
result.setBooks(first.getBooks().unionAll(second.getBooks());
return result;
}
...
}
结果集中不会有重复项Book
,因为正如接口的 Javadoc 中所述java.util.Set
:
Set 是一个不能包含重复元素的集合。它对数学集合抽象进行建模。
要么在用户中创建一个方法(如果他们有联合则返回一个新用户,否则返回 null)或将两个用户传递给用户的构造函数并让它创建联合,后者对我来说很有意义,联合的结果将是一个新用户,无论他们是否有普通书籍(无论如何在 OOP 中)。
但是你试过什么?“最好的”方式并不总是适合您的应用程序,如果您的想法是正确的并且代码不起作用,那么您处于获得帮助的最佳情况;)