让我们说我有一个数组如下:
String[] letter = {a, b, c, e, f, }
如何修剪此数组以消除空元素?
答案 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());
}
}
}`