从Java中的String数组中删除未填充的值或空值


问题内容

tmp = [null, null, null, Mars, Saturn, Mars]在执行该操作后,我得到了以下字符串数组- 字符串数组 在
allSig[d3].split(" ");哪里allSig。空值是数组中的空值。现在我要删除空值。为此,我正在使用

tmp[indexNumber] != null没有工作并给予真实; 以null为值。即使我使用“ null”作为字符串也不起作用。

如何删除它。

public static String[] removeElements(String[] allElements) {
    String[] _localAllElements = new String[allElements.length];

    for (int i = 0; i < allElements.length; i++)
        if (allElements[i] != null)
            _localAllElements[i] = allElements[i];

    return _localAllElements;
}

问题答案:
public static String[] clean(final String[] v) {
  int r, w;
  final int n = r = w = v.length;
  while (r > 0) {
    final String s = v[--r];
    if (!s.equals("null")) {
      v[--w] = s;
    }
  }
  return Arrays.copyOfRange(v, w, n);
}

要么

public static String[] clean(final String[] v) {
  int r, w, n = r = w = v.length;
  while (r > 0) {
    final String s = v[--r];
    if (!s.equals("null")) {
      v[--w] = s;
    }
  }
  final String[] c = new String[n -= w];
  System.arraycopy(v, w, c, 0, n);
  return c;
}

工作良好…

public static void main(final String[] argv) {
  final String[] source = new String[] { "Mars", "null", "Saturn", "null", "Mars" };
  assert Arrays.equals(clean(source), new String[] { "Mars", "Saturn", "Mars" });
}