如何在Java中摆脱数组的空元素?

时间:2011-12-01 13:03:46

标签: java arrays string

让我们说我有一个数组如下:

  String[] letter = {a, b, c, e, f, }

如何修剪此数组以消除空元素?

5 个答案:

答案 0 :(得分:7)

该数组中 没有“空”元素。尾随逗号没有区别 - 您的数组仍然有5个元素。

如果你在实际代码中遇到一个真正的问题,那么数组中的某些元素是空的(你必须说出你的意思 - 空值?引用空字符串的值?)你不能改变现有数组的大小,但你可以创建一个 new 数组,例如与

List<String> list = new ArrayList<String>();
for (String text : array)
{
    if (text != null && text.length() > 0)
    {
        list.add(text);
    }
}
array = list.toArray(new String[0]);

答案 1 :(得分:2)

没有空元素。

Java允许在代码中定义的数组中的最后一个元素之后使用尾随逗号。所以你的数组中没有空元素。

为了创建一个空(null)元素,您需要这样做:

String[] letter = {a, b, c, e, f, null};

注意:根据我的解释,OP认为尾随逗号正在向数组的末尾添加一个null元素。

答案 2 :(得分:1)

阵列中没有空元素。如果你把它放在下面那么它也将包含null和space。

String[] letter = {"a", "b", "c", "e", "f", null, " h", " "};

然后你必须经历这样的事情。

    for (int i = 0; i < letter.length; i++) {
        if (letter[i] != null && !letter[i].equals(" ")) {
            System.out.println("Letters::::::" + letter[i]);
        }

    }
    System.out.println("Length:::::" + letter.length);

答案 3 :(得分:0)

假设您确实在最后有一个包含一个或多个null元素的数组,您可以使用下面的代码查找第一个null元素的索引,然后创建一个数组,丢弃该元素及其后的任何内容。

// sample array to be trimmed
String[] array = {"1", "2", "3", null, null};

int end = Arrays.asList(array).indexOf(null);
if (end >= 0) {
    String[] tmp = new String[end];
    System.arraycopy(array, 0, tmp, 0, end);
    array = tmp;
}

答案 4 :(得分:0)

您可以使用此简单的代码段来删除数组中的空值和空字符串     import java.util.Arrays;

public class Test {
   public static void main(String[] args) {
      String data = "1, 2, ,4 , , 5 ";
      String[] split = data.split(",");
      split = Arrays.stream(split).filter(s -> (s != null && s.length() > 0 && !s.trim().equals("")))
            .toArray(String[]::new);
      for(String str:split){
          System.out.println(str.trim());
      }
  }
}`