2016-04-26 71 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--); 
    } 
} 

有沒有必要檢查是否存在空值,因爲如果變量都被賦予一個空值不會編譯。