gpt4 book ai didi

java - 已清理的列表包含空元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:52 28 4
gpt4 key购买 nike

我有一个包含结果列表的数据对象列表。我想在另一个列表中以相同的顺序保存所有结果列表。但是,某些结果元素列表为空。

在获取所有字符串值之前,我正在清理列表:

    for (int i = 0; i < dataList.size(); i++) {
if (dataList.get(i).getResultList() == null) {
dataList.remove(i);
}
}

然后我想写入另一个列表:

//double List to String
List<List<String>> ar_List = new ArrayList<List<String>>();
for (int i = 0; i < dataList.size(); i++) {
for (int j = 0; j < dataList.get(i).getResultList().size(); j++) {
if(dataList.get(i).getResultList().get(j) != null) {
ar_List.get(i).add(dataList.get(i).getResultList().get(j).toString());
} else {
ar_List.get(i).add("null");
}
}
}

但是我在 if(dataList.get(i).getResultList().get(j) != null) { 处得到了一个 NullPointerException。那是因为一些 dataList 对象是空的。然而这是不可能的,因为我之前清理了列表。有什么建议吗?

感谢您的回答!

更新

使用:

    for (int i = dataList.size()-1; i >=0 ; i--) {
if (dataList.get(i).getResultList() == null) {
dataList.remove(i);
}
}

List<List<String>> ar_List = new ArrayList<List<String>>();
for (int i = 0; i < dataList.size(); i++) {
for (int j = 0; j < dataList.get(i).getResultList().size(); j++) {
if(dataList.get(i).getResultList().get(j) != null) {
ar_List.get(i).add(dataList.get(i).getResultList().get(j).toString());
} else {
ar_List.get(i).add("null");
}
}
}

结果:

java.lang.IndexOutOfBoundsException:ar_List.get(i).add(dataList.get(i).getResultList().get(j).toString());

最佳答案

问题出在删除部分。您正在删除列表项,因此您的列表将被更改,并且它将跳过一些被清理的项目。您可以使用迭代器或向后删除项目,如下所示:

你可以替换:

   for (int i = 0; i < dataList.size(); i++) {
if (dataList.get(i).getResultList() == null) {
dataList.remove(i);
}
}

   for (int i = dataList.size()-1; i >=0 ; i--) {
if (dataList.get(i).getResultList() == null) {
dataList.remove(i);
}
}

关于java - 已清理的列表包含空元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21602753/

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