Найти совпадения в полях объектов

182
12 октября 2017, 10:01

У меня есть List<Document> listOfDocuments = new ArrayList<>() объектов.

Вот сами объекты:

book (author, title, publisher, annotation, text)
article (author, title, journal, year, text)
wiki (link, title, text)

List listOfDocuments = new ArrayList<>();

Мне нужно найти объекты, у которых будут совпадать title и/или text. Все объекты наследуются от класса Document.

Проблема - я не понимаю, как пройтись по всем документам и их полями. Нужно создать какой-то цикл или есть какой-то метод?

Answer 1
for (int i = 0; i < list.size(); ++i) {
    for (int k = i + 1; k < list.size(); ++k) {
        if (list[i].title == list[k].title ||
            list[i].text == list[k].text) {
                ++count; //нашли пару
         }
    }
}

Код работает при условии, что вы вынесли все поля в класс Document, иначе полиформизм не позволит нам обратится к этим полям. Так же поля лучше сделать private и написать соответствующие get методы.

Answer 2

Да, если пользоваться стандартными средствами языка программирования, то циклом:

for (Document item : listOfDocuments) { 
    // проверка item.title и item.text
}
READ ALSO
Поиск по подстроке Hibernate

Поиск по подстроке Hibernate

Есть таблица c полем descriptionКак мне сделать поиск в таблице по этому полю так, чтоб выводились не только записи в которых description полностью совпадает...

278
Элемент вывода javafx

Элемент вывода javafx

Какой элемент нужно использовать для вывода информации пользователю? TextField использую в настоящее время, но он не подходит, так как позволяет...

207
Расширение/замена методов Java через код на JS

Расширение/замена методов Java через код на JS

Я занимаюсь разработкой ответвления одного Android-рогалика, главной фичей которого должен стать моддинг (изменение поведения игры, добавление...

262