我被简单的事情困住了,比如循环 for
和 if
语句。
我有两个不同的对象:
对象A:
0: id = 1, name = null
1: id = 3, name = null
对象B:
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());
}
}
在此之后,我有一个 objectA
列表,其中姓氏来自 objectB
数组。根据 Android Studio Debugger 和一些......逻辑......这在逻辑上是合乎逻辑的,但我错过了什么并且做错了什么?
我的错误输出:
对象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
}
对象B类:
class objectB {
var objectBName: String? = null
var objectBID: Int? = null
}
更新。 2020 年 4 月 30 日:
仍然得到相同的错误输出,基于下面的答案尝试了 equals
、==
、===
、Java 中的 POJO 的不同变体 Kotlin 。
UPD: 只是浪费了你的时间 - 当我试图用你的提示发现错误时,我已经对我的代码进行了恶意攻击并开始为 objectA 分配相同的 ID 和名称是平等的。
最佳答案
我假设 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........
}
关于java - 通过 ID 分配两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61513036/