如何在Java中去掉数组中的空元素?
假设我有一个数组,如下所示:如何在Java中去掉数组中的空元素?,java,arrays,string,Java,Arrays,String,假设我有一个数组,如下所示: String[] letter = {a, b, c, e, f, } 如何修剪此数组以除去空元素?该数组中没有“空”元素。尾随的逗号没有区别-数组仍然有5个元素 如果在实际代码中,数组中的某些元素为空(并且您必须说明您所说的-null值?值指的是空字符串?),那么您无法更改现有数组的大小,但可以创建一个新数组,例如使用 List<String> list = new ArrayList<String>(); for (String t
String[] letter = {a, b, c, e, f, }
如何修剪此数组以除去空元素?该数组中没有“空”元素。尾随的逗号没有区别-数组仍然有5个元素
如果在实际代码中,数组中的某些元素为空(并且您必须说明您所说的-null值?值指的是空字符串?),那么您无法更改现有数组的大小,但可以创建一个新数组,例如使用
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]);
List List=new ArrayList();
for(字符串文本:数组)
{
if(text!=null&&text.length()>0)
{
列表。添加(文本);
}
}
array=list.toArray(新字符串[0]);
没有空元素。
Java允许在代码中定义的数组中的最后一个元素后面加一个逗号。因此,数组中没有空元素
为了创建空(null)元素,您需要执行以下操作:
String[] letter = {a, b, c, e, f, null};
注意:根据我的解释,OP认为后面的逗号在数组末尾添加一个null元素。数组中没有空元素。如果你把like放在下面,那么它也将包含null和空格
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);
for(int i=0;i
假设您的数组末尾有一个或多个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;
}
您可以使用这个简单的代码段从数组中删除null和空字符串` 导入java.util.array
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());
}
}
}`
重复的:这个问题不是那个问题的重复。@Erick Robertson如果你阅读这个问题下面的注释,你会发现它是。初始值设定项中的尾随逗号被忽略。参见[Here][1][1]:-1问题不清楚空元素是什么。在我看来,OP认为由于后面的逗号,正在将null添加到数组的末尾。但是这还不清楚,这个问题需要改进。请注意,
for(数组中的字符串文本)
是psudocode。在java中使用for(String text:array)
。@AmirRaminfar:嗯,这是无效的代码-混合了C#的foreach和java的增强for循环。现在修好了。