如何从java中的多维数组中删除null元素

时间:2016-04-26 06:46:50

标签: java arraylist multidimensional-array

我有一个名为Arr_SxCorrel_table2d的arrayList,如: ArrayList的类型为:ArrayList<List<String>>

Arr_SxCorrel_table2dREMOVAL[[OF, RE, RE, RE, IND], [HA, 22, 3, 1, 4, 18%], [HA, 7, 3, 1, 4, 57%], [REG, 3, 1, 0, 1, 33%], [BING, 4, 3, 33, 32, 23%], [], [NOTE: details.], [], [], []]

我想摆脱空的元素。我试过了:

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

但没有任何东西被删除。不确定下一步应该是什么

2 个答案:

答案 0 :(得分:1)

您的代码会从外部列表中删除null引用,但它不会删除空列表。

尝试:

for (int i=0;i<Arr_SxCorrel_table2d.size(); i++) {
    if (Arr_SxCorrel_table2d.get(i) == null || Arr_SxCorrel_table2d.get(i).isEmpty()){
        Arr_SxCorrel_table2d.remove(i); 
        i--;
    }
}

请注意,每当从List中删除元素时,i必须递减,因为删除元素后面的元素的索引会递减。

答案 1 :(得分:0)

如果它们大于0,您可以检查它们的大小:

for (int i = 0; i < Arr_SxCorrel_table2d.size(); i++) {
    if (Arr_SxCorrel_table2d.get(i).size() == 0) {
        Arr_SxCorrel_table2d.remove(i--);
    }
}

没有必要检查是否存在空值,因为如果变量被赋予空值,它将无法编译。