对于每个循环都是迭代的,并且每次都返回最后一个迭代列表作为结果
For each loop is iterating, and everytime returning the last iteration list as result
这是我的代码,它有 for Each 循环,但每次它都在迭代并给出最后一次迭代结果。
例如:如果有 2 次迭代。两次迭代都给出了最后一次迭代结果。
private List<someData> getsomeDetails(
BusDetail bus)
{
List<someData> someDataList = new ArrayList<>();
SSsome SSsome = new SSsome();
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});
return someDataList;
}
谁能尽快帮忙
提前致谢。
您正在为同一个对象设置值 SSsome
。当然,最后一次迭代将是最近一次迭代,因此您看到的是上一次迭代的值。
基本上,您添加到列表中的所有对象都具有最近迭代的相同值。
您需要在 forEach 中创建对象并追加到列表中。
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome SSsome = new SSsome();
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});
注意:如果创建对象,更新值,添加到列表,然后再次更新值;列表中的对象也会更新。
您的代码:
SSsome SSsome = new SSsome();
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});
所以只有一个SSSome,在循环外创建,所以你一直在修改同一个。我想你想做的是:
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome SSsome = new SSsome();
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});
这是我的代码,它有 for Each 循环,但每次它都在迭代并给出最后一次迭代结果。 例如:如果有 2 次迭代。两次迭代都给出了最后一次迭代结果。
private List<someData> getsomeDetails(
BusDetail bus)
{
List<someData> someDataList = new ArrayList<>();
SSsome SSsome = new SSsome();
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});
return someDataList;
}
谁能尽快帮忙
提前致谢。
您正在为同一个对象设置值 SSsome
。当然,最后一次迭代将是最近一次迭代,因此您看到的是上一次迭代的值。
基本上,您添加到列表中的所有对象都具有最近迭代的相同值。
您需要在 forEach 中创建对象并追加到列表中。
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome SSsome = new SSsome();
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});
注意:如果创建对象,更新值,添加到列表,然后再次更新值;列表中的对象也会更新。
您的代码:
SSsome SSsome = new SSsome();
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});
所以只有一个SSSome,在循环外创建,所以你一直在修改同一个。我想你想做的是:
bus.getBUDetail().get(0).getBUDetail().getBUList().forEach(bu -> {
SSsome SSsome = new SSsome();
SSsome.setNbr(bu.getNumber());
SSsome.setCountryCode(bu.getState());
SSsome.setStatus("PROCESSING");
someDataList.add(SSsome);
});