我在处理带有空字段的Arraylist时遇到问题。
作为输入,我有一个Excel列表中的值,有些单元格为空(显示示例)。
Column A Column B Column C Column D
Val1 Val2 Val3 Val4
Bla1 Bla2 Bla3
Hug1 Hug2 Hug3 Hug4
...
这些价值观目前在Arraylist中如此之好。现在我有一个Switch Case,我现在选择D列来使用。问题现在是我不能处理空字段。这些必须删除或跳过,因为我的输出没有null。 当我试图这样做时,我得到一个空指针异常。
以下是一些代码:
private Arraylist<ExcelReader> el;
private void doSomething() {
switch (chooseColumn) {
// ArrayList is loaded
//…
case “D”:
// here I want to remove the null fields
for (int c = 0; c <= el.size(); c++) {
if(el.get(c).getColumnD().isEmpty()) {
el.remove(c);
}
}
break;
// …
}
我已经尝试过将它写回文件,但得到了空指针异常。 我的错误在哪里?我做错了什么?
答案 0 :(得分:2)
private Arraylist<ExcelReader> el;
private void doSomething() {
switch (chooseColumn) {
// ArrayList is loaded
//…
case “D”:
// here use removeAll to remove all null object
el.removeAll(Collections.singleton(null));
for (int c = 0; c <= el.size(); c++) {
if(el.get(c).getColumnD().isEmpty()) {
el.remove(c);
}
}
break;
// …
}
答案 1 :(得分:1)
您应该了解isEmpty()不检查空值。它只检查size == 0。 因此,为了检查空值,您应该检查条件getColumnD()!= null