Java 带有空文件的ArrayList

Java 带有空文件的ArrayList,java,arraylist,Java,Arraylist,我在处理带有空字段的Arraylist时遇到问题 作为输入,我有Excel列表中的值,其中一些单元格为空(显示示例) 到目前为止,这些值都在Arraylist中。现在我有了一个切换案例,在这里我选择了要使用的Now列D。现在的问题是我不能处理空字段。因为我的输出没有空值,所以必须删除或跳过这些值。 当我尝试这样做时,我得到了一个空指针异常 下面是一些代码: private Arraylist<ExcelReader> el; private void doSomething() {

我在处理带有空字段的Arraylist时遇到问题

作为输入,我有Excel列表中的值,其中一些单元格为空(显示示例)

到目前为止,这些值都在Arraylist中。现在我有了一个切换案例,在这里我选择了要使用的Now列D。现在的问题是我不能处理空字段。因为我的输出没有空值,所以必须删除或跳过这些值。 当我尝试这样做时,我得到了一个空指针异常

下面是一些代码:

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;
   // …

}
私有数组列表el;
私人无效剂量(){
开关(选择列){
//ArrayList已加载
//…
案例“D”:
//这里我想删除空字段

对于(int c=0;c您应该理解isEmpty()不检查空值。它只检查size==0或否。 因此,要检查空值,您应该检查条件getColumnD()!=null

private Arraylist el;
私人无效剂量(){
开关(选择列){
//ArrayList已加载
//…
案例“D”:
//这里使用removeAll删除所有空对象
el.removeAll(Collections.singleton(null));

对于(int c=0;c当然
el.get(c).getColumnD().isEmpty())
如果您有
null
值,则会出现问题。如果
get(c)
返回
null
,则可以在那里进行检查。如果
el.get(c),则可能存在重复的yes值为null
如果返回空值,您可以看到副本以找到非常好的解决方案。如果不是,这将需要一些改进或条件来过滤这些内容,而不将其从列表中删除。因为这是我发布的副本,您至少可以添加答案的来源。如果没有来源和一些IM改进。另外,您忘了添加解释。现在我得到了java.lang.reflect.InvocationTargetException请共享异常堆栈跟踪我必须在一行中设置空字段,第一个字段将被删除,第二个字段将显示
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;
   // …

}
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;
// …

}