@student_1

Как сравнить два ArrayList`a по их содержимому?

Есть два листа:
private List rbsList;

и
private List partnerList;

Я хочу сравнит два листа, по их содержимому в объекте.
Но мой код не работает.
Вопрос: Что тут не так и как правильно реализовать?
код:
private List<PaymentRBS> rbsList;
    private List<PaymentPartner> partnerList;

    public void compare() {
        List<PaymentPartner> found = new ArrayList<>();
        for (PaymentRBS rbs : rbsList) {
            found = partnerList.stream()
                    .filter(paymentPartner ->
                    paymentPartner.getAccount().equals(rbs.getAccount()) && paymentPartner.getSum() == rbs.getSum())
                    .collect(Collectors.toList());
        }

        found.forEach(System.out::println);

    }
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
xez
@xez Куратор тега Java
Senior Junior Roo
Я бы сделал так:
1. Сделал бы мапу из обоих листов, где ключ - номер, счёта, а значение - сам объект.
2. По этому ключу объединил бы обе мапы в одну, но значение было быTupple2<PaymentRBS, PaymentPartner>. Т.о. в одном таппле были бы оба объекта с одинаковыми номером счета.
3. По значениям в итоговой коллекции можно будет производить все интересующие операции.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы