所以..我有这个类,用户,并且任何用户都有一套书籍,我想要定义这个类之间的类和层次结构,所以如果我在两个用户之间建立联合,那么结果,我想要一个新的用户,他的一套书将是一个用户的书籍和另一个用户的书籍之间的联合。
提前致谢
答案 0 :(得分:0)
您可以在User
类中提供静态方法,称为unionUser(User first, User second)
,它将两个User
实例作为参数,并返回一个新的User
实例,其中包含Book
个实例Set#unionAll()
1}}集,这将通过调用 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
结果java.util.Set
集合中不会有重复项,因为正如{{1}}接口的Javadoc所述:
Set是一个不能包含重复元素的Collection。它 模拟数学集抽象。
答案 1 :(得分:0)
在用户中创建一个方法(如果他们有一个联合则返回一个新用户,否则返回null)或者将两个用户传递给用户的构造函数并让它创建联合,后者对我有意义,结果是无论他们是否有共同的书籍(无论如何都是OOP),联盟将是一个新用户。
但你有什么尝试? “最好的”方式并不总是最适合您应用的方式,如果您的想法是正确的并且代码不起作用,那么您可以在最佳情况下获得帮助;)