SaveAll для многих списков (Java)

67
7

У меня есть список списков (List<SomeClass>), и я хочу получить пересечение. SomeClass выглядит так:


public class SomeClass {
private String a;
private String b;

// getters and setters
}


Он должен стать только частью пересечения, если члены a и b равны. Как я могу это сделать?


Я мог бы как-то использовать Collection.retainAll(...). Но у меня есть большое количество объектов List для сравнения...

спросил(а) 2011-06-07T12:46:00+04:00 9 лет назад
1
Решение
67

Переопределите методы equals и hasCode соответственно для вашего класса. См. Реализация равна. Эти два метода неявно находятся в экземпляре Object, корневом каталоге всех классов, и их можно настроить/переопределить для реализации идентификации экземпляров, следующих за определенной семантикой, например, в вашем случае.


Этот другой вопрос SO также затрагивает эту проблему, и вы можете найти примеры, реализующие методы equals и hasCode.

Как добавить все элементы в N списков. Вы можете просто запустить a HashSet с первым списком и перебрать остальные, называя retainAll.

ответил(а) 2011-06-07T12:51:00+04:00 9 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема