Перебрать два списка и найти совпадения


У меня есть 2 списки разной длины. Оба списка содержат данных, который должен быть согласован с записями из другого списка. В настоящее время я итерация оба списка с вложенными for-loop.

List<MyClass1> list2 = myClass1dao.findUnmatchedEntries();
List<MyClass2> list1 = myClass2dao.findUnmatchedEntries();

for (MyClass2 list1entry : list1) {
    for (MyClass1 list2entry : list2) {
        if (list1entry.getName().equals(list2entry.getName())
            && list1entry.getID().equals(list2entry.getID())) {
            //update entries
            myClass2dao.update(list1entry);
            myClass1dao.update(list2entry);
            break;
        }
    }
}

Я знаю, что это происходит в геометрической прогрессии больше, чем больше элементов в каждом списке.

Так что мой вопрос, как может этот код быть улучшено?

Примечание: Я на основе кода Java 7, поэтому ответы для Java 7 являются предпочтительными, но Java 8 тоже неплохо



4932
1
задан 26 января 2018 в 07:01 Источник Поделиться
Комментарии
1 ответ

Я предполагаю, что оба списка содержат объект того же типа/класса, т. е. операция myclass1 и MyClass2 не два разных класса.

В таком случае MyClass может переопределить метод Equals. Как только равно реализуется как заявил &, Как вы убедились, не были нарушены, равно и договор хэш-код, вы можете использовать хеш.

Это может уменьшить сложность.

0
ответ дан 26 января 2018 в 03:01 Источник Поделиться