-1

所以..我有这个类,用户,并且任何用户都有一组书籍,我想定义这些类之间的类和层次结构,所以如果我在两个用户之间建立联合,结果,我想要有一个新用户,他的书集将是一个用户的书和另一个用户的书之间的联合。

提前致谢

4

2 回答 2

0

您可以简单地在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 是一个不能包含重复元素的集合。它对数学集合抽象进行建模。

于 2013-05-22T00:48:32.477 回答
0

要么在用户中创建一个方法(如果他们有联合则返回一个新用户,否则返回 null)或将两个用户传递给用户的构造函数并让它创建联合,后者对我来说很有意义,联合的结果将是一个新用户,无论他们是否有普通书籍(无论如何在 OOP 中)。

但是你试过什么?“最好的”方式并不总是适合您的应用程序,如果您的想法是正确的并且代码不起作用,那么您处于获得帮助的最佳情况;)

于 2013-05-22T00:49:23.517 回答