2016-04-26 70 views
0

已经ArrayList的一个名为Arr_SxCorrel_table2d,如: ArrayList中的类型为:ArrayList<List<String>>我如何删除从多维数组空元素在Java

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); 
         } 
       } 

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

+0

列表中没有空元素。 – shmosel

+0

那么这些[]是什么。他们是否包含空白? –

+0

它们可以是空列表,也可以是包含单个空白元素的列表。但是你显然处于更好的位置。 – shmosel

回答

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

注意i必须递减每当从列表中删除元素,因为随后被删除的元素的元素的索引递减。

+0

好的,但元素仍未删除。 –

+0

@SebastianZeki如果问题中的[]元素表示空的内部列表,它们应该被'Arr_SxCorrel_table2d.get(i).isEmpty()'条件捕获并删除。 – Eran

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--); 
    } 
} 

有没有必要检查是否存在空值,因为如果变量都被赋予一个空值不会编译。