【问题标题】:How to remove null elements from multidimensional array in java如何从java中的多维数组中删除空元素
【发布时间】:2016-04-26 06:46:50
【问题描述】:

我有一个名为 Arr_SxCorrel_table2d 的数组列表,例如: 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); 
                         }
                 }

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

【问题讨论】:

  • 您的列表中没有空元素。
  • 那么这些 [] 是什么。它们是否包含空格??
  • 它们可以是空列表,也可以是包含单个空白元素的列表。但你显然处于一个更好的位置去找出答案。
  • 能否包含回车元素。有没有可能让它看起来像我一样?
  • 尝试检查 ArrayList 的大小。

标签: java arraylist multidimensional-array


【解决方案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 必须递减,因为被移除元素之后的元素的索引会递减。

【讨论】:

  • 好的,但是元素仍然没有被删除。
  • @SebastianZeki 如果问题中的[] 元素表示空的内部列表,它们应该被Arr_SxCorrel_table2d.get(i).isEmpty() 条件捕获并删除。
【解决方案2】:

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

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

没有必要检查是否有空值,因为如果给变量一个空值,它将无法编译。

【讨论】:

    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 2019-08-23
    • 2020-08-09
    • 2021-01-23
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多