将两个数组分配给同一个ID

3

我在简单的循环 for 和条件语句 if 上遇到了瓶颈。

我有两个不同的对象:

objectA:

0:id = 1,name = null

1:id = 3,name = null

objectB:

id = 1,name = NameForID1

id = 3,name = NameForID3

我的目标是通过ID值将objectB的名称赋给objectA。

我已经用了双重循环和if语句:

            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());
                }
            }

接下来,我有一个objectB数组中的姓氏列表与objectA的列表。根据Android Studio调试器和一些......逻辑......这在逻辑上是正确的,但我错过了什么并且做错了什么?

我的错误输出:

objectA:

0:id = 1,name = NameForID3

1:id = 3,name = NameForID3

期望的输出:

objectA:

0:id = 1,name = NameForID1

1:id = 3,name = NameForID3

更新

ObjectA类:

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

ObjectB类:

class objectB {

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

}

更新. 2020年4月30日: 根据下面的答案,尝试了 equals, ==, === 以及在 Java 中使用 POJO,但仍然得到相同的错误输出。

更新: 我浪费了你的时间 - 当我尝试使用你的提示查找错误时,我让我的代码受到了恶意软件攻击,并开始将相同的 ID 分配给 objectA,以至于它们的名称也相同了。

1个回答

2
我假设ids是整数:
可以尝试这样做:
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........
}

使用这段代码时,它没有进入“if”语句,因此我没有得到任何“setobjectAName()”。 - danyapd
你的ID是整数还是字符串? - Hasan Bou Taam
所有的ID都是整数。等式语句导致我的帖子输出错误。 - danyapd
IDE无法识别运算符===,出现错误“需要表达式”。 - danyapd
我更新了整个答案,你必须使用Java对象和==来比较整数。 - Hasan Bou Taam
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接