Назначение двух массивов по идентификатору - PullRequest
3 голосов
/ 30 апреля 2020

Я застрял в таких простых вещах, как оператор al oop for и if.

У меня есть два разных объекта:

objectA:

0: id = 1, name = null

1: id = 3, name = null

objectB:

id = 1, name = NameForID1

id = 3, name = NameForID3

Моя цель - назначить имена из objectB для objectA по значению идентификатора.

Я сделал двойной l oop +, если:

            for (int i = 0; i <= objectA.size() - 1; i++){
                for(int j = 0; j<=objectB.size() - 1; j++){
                    if(Objects.requireNonNull(objectA.get(i).getobjectAID()).equals(objectB.get(j).getObjectBID()))
                        objectA.get(i).setobjectAName(objectB.get(j).getobjectBName());
                }
            }

И после этого у меня есть список objectA с фамилией из массива objectB. Согласно Android Studio Debugger и некоторым ... logi c ... это логично, но что я пропускаю и делаю неправильно?

Мой плохой вывод:

объект A:

0: id = 1, name = NameForID3

1: id = 3, name = NameForID3

Ожидаемый результат:

объект A:

0: id = 1, name = NameForID1

1: id = 3, name = NameForID3

UPD

Класс ObjectA:

class objectA:Serializable {
    var objectAID: Int? = null
    var objectAName: String? = null
}

Класс ObjectB:

class objectB {

    var objectBName: String? = null
    var objectBID: Int? = null

}

UPD. 30.04.2020: Все еще получая тот же плохой результат, основываясь на ответах ниже, пробовали различные варианты equals, ==, ===, POJO в Java вместо Kotlin.

UPD: Просто потратил впустую ваше время - когда я пытался найти ошибку с вашими подсказками, я испортил свой код и начал назначать равные идентификаторы для objectA, поэтому имена были равны.

1 Ответ

2 голосов
/ 30 апреля 2020

Я предполагаю, что ids integers:

Попробуйте:

for (int i = 0; i < objectA.size(); i++){

for(int j = 0; j < objectB.size(); j++){

if(objectA.get(i).getobjectAID() == objectB.get(j).getObjectBID()){

//set
objectA.get(i).setobjectAName(objectB.get(j).getobjectBName());

}

}

}

Ваш POJO должен быть в java, например:

Объект A

public class objectA {
    private int objectAID;
    private String objectAName;

    //generate getters and setters........
}

Объект B

public class objectB {
    private int objectBID;
    private String objectBName;

    //generate getters and setters........
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...