2013-05-22 2 views
-1

Итак, у меня есть этот класс, Пользователь, и у любого пользователя есть набор книг, и я хочу определить класс (ы) и иерархию между этими классами, поэтому, если я сделаю объединение между двумя пользователями, в результате я хочу иметь нового пользователя, и его набор книг будет объединением между книгами от одного пользователя и книгами от другого.Класс для определения объединения объектов

Заранее спасибо

+0

В чем вопрос? Что вы пробовали? Кроме того, вы должны показать некоторое усилие, прежде чем сказать «Дайте мне код» – Craig

+0

, я сделал некоторый код, но я хочу знать, как правильно это сделать, спасибо –

ответ

0

Вы можете просто предоставить статический метод в User класса, называется unionUser(User first, User second), который принимает два User экземпляров в качестве аргументов и возвращает новый User экземпляр с unioned 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:

A Заданная это коллекция, которая не может содержать повторяющиеся элементы. Он моделирует математическую абстрактную абстракцию.

+0

за ваш ответ! могу ли я задать вам другой вопрос? что, если вместо пользователей и книг у меня есть пользователи и группы пользователей, и я хочу объединение между пользователем/пользователем, пользователем/groupofusers, группой/группой. Я объясняю себя? еще раз спасибо! Редактирование: теперь у меня есть класс ElementoUsuario и два класса, которые наследуются от ElementoUsuario, это Usuario и GrupoUsuarios .. –

+0

Затем вы можете использовать метод 'Set # unionAll()' для пользователя/пользователя, пользователя/groupofusers и т. д. Прочитайте эту статью, чтобы уточнить: http://docs.oracle.com/javase/tutorial/collections/interfaces/set.html Приветствия! :) –

+0

Я прочитаю, спасибо! –

0

Либо создайте метод у пользователя (возвращая нового пользователя, если у него есть объединение, но в противном случае) или передайте двух пользователей конструктору пользователя, и пусть он создает объединение, последнее имеет смысл для меня, результатом объединения будет новый пользователь, независимо от того, имеют ли они общие книги (в ООП в любом случае).

Но что вы пробовали? «Лучший» способ - это не всегда лучший способ для вашего приложения, если ваша идея верна и код не работает, вы находитесь в наилучшей возможной ситуации, чтобы получить помощь здесь;)

+0

благодарю вас за ответ! –

Смежные вопросы