gpt4 book ai didi

java - 以线性方式映射对象列表

转载 作者:行者123 更新时间:2023-12-01 19:31:36 25 4
gpt4 key购买 nike

考虑两个对象,即

Person -> name, age, salary, address, sqFootage

House -> address, sqFootage

其中包含给定的参数。

我需要将数据从房屋列表 (List) 映射到人员列表 (List) 。条件是1个人拥有唯一的第一套房子,并且第一套房子只属于第一个人,即:一对一映射。我正在努力增强我所写的逻辑。我还可以尝试以下代码的其他方法吗?

for(int i =0; i<personList.size(); i++){
for( int j = 0; j<houseList.size(); j++){
if( i == j){
personList.get(i).setAddress(houseList.get(j).getAddress);
personList.get(i).setSqFootage(houseList.get(j).getSqFootage)
}
}
}

最佳答案

您正在使用不必要的嵌套循环。如果索引为 1 的人拥有索引为 1 的房子,则 personListhouseList 具有相同的大小,您可以使用一个 for 循环来完成,也可以使用一个IntStream 迭代所需范围(0, personList.size()):

IntStream.range(0,  personList.size()).forEach(i -> { 
personList.get(i).setAddress(houseList.get(i).getAddress());
personList.get(i).setSqFootage(houseList.get(i).getSqFootage());
});

问题中嵌套 for 循环:

e.g. 3 person - 3 houses

person house
0 0 // if( i == j) -> true, assign house(0) to person(0)
0 1 // unnecessary step
0 2 // ...
1 0 // ...
1 1 // if( i == j) -> true, assign house(1) to person(1)
1 2 // unnecessary step
2 0 // ...
2 1 // ...
2 2 // if( i == j) -> true, assign house(2) to person(2)

所以你循环了 9 次,但将房子分配给一个人只需要 3 次。

关于java - 以线性方式映射对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59678321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com