У меня есть следующий код:Перебор две коллекции с двумя петлями
for (Object a : collection1) {
for (Object d : collection2) {
if (a.getM().equals(d.getM())
&& a.getB().equals(d.getB())) {
if (!a.getC().equals(d.getC())) {
String toPrint = "This is different :a.getC() + d.getC() !";
System.out.println(toPrint);
different.add(toPrint);
}
}
}
}
Проблема заключается в том: Вместо печати только элемент, который не является такой же код выводит на экран все записи, которые сравниваются. Также у меня есть те же C
и C
свойства объектов, но программа их печатает в любом случае, даже если они одинаковы.
Как распечатать только те элементы, которые не совпадают и только один раз? Он в основном печатает каждое сравнение, которое он делает.
Я сохраняю все в комплекте, и я избавляюсь от дубликатов, но это не очень хорошее решение. Должен быть способ печати только объекта, который имеет разные getC()
. Кроме того, моя самая большая проблема заключается в том, что он печатает объекты, которые имеют одинаковое значение для C
.
EDIT: Объект a
и объект d
имеют одинаковый тип объектов (например Person
). getM()
- простой getter, который возвращает имя объекта. getB()
- простой приемник, который возвращает номер телефона объекта. equals
не переоценивается. Он просто используется, как вы обычно его используете.
Это реальный код и реальный выход из программы:
for (Apn a : aosp_mms_settings)
for (Apn d : db_mms_settings) {
if (a.getMcc().equals(d.getMcc())
&& a.getMnc().equals(d.getMnc())) {
if (!a.getApn().equals(d.getApn())) {
String toPrint = "[MCC: " + a.getMcc() + " MNC: "
+ a.getMnc() + " OTHER MCC" + d.getMcc()
+ " OTHER MNC : " + d.getMnc() + "]"
+ " < APN: " + a.getApn() + ">" + "Other APN:"
+ d.getApn();
System.out.println(toPrint);
different_apns.add(toPrint);
}
[MCC: 206 MNC: 20 OTHER MCC206 OTHER MNC : 20] < APN: mms.base.be>Other APN:mms.be
[MCC: 206 MNC: 20 OTHER MCC206 OTHER MNC : 20] < APN: mms.base.be>Other APN:mms.be
[MCC: 206 MNC: 20 OTHER MCC206 OTHER MNC : 20] < APN: mms.base.be>Other APN:mms.be
[MCC: 206 MNC: 20 OTHER MCC206 OTHER MNC : 20] < APN: mms.base.be>Other APN:mms.be
[MCC: 206 MNC: 20 OTHER MCC206 OTHER MNC : 20] < APN: mms.base.be>Other APN:mms.be
[MCC: 206 MNC: 20 OTHER MCC206 OTHER MNC : 20] < APN: mms.base.be>Other APN:mms.be
[MCC: 206 MNC: 20 OTHER MCC206 OTHER MNC : 20] < APN: mms.base.be>Other APN:mms.be
Вы собираетесь должны предоставить гораздо больше информации. Например, что возвращает getM(), getC() и getB()? Был ли equals() переопределен для того, что возвратит эти функции? –
Он добавит объект toPrint в случае, если getM & getB равен, но getC не является eqal – Kick
, пожалуйста, напишите полный синтаксический код ошибки, который помогает больше всего на свете. Пункт 1: Нет заявления о печати! пункт2: 'toPrint' двойная кавычка отсутствует! – Helios