从java数组中删除空值
我试图从csv字符串转换的数组中删除空值 这就是我想做的从java数组中删除空值,java,arrays,Java,Arrays,我试图从csv字符串转换的数组中删除空值 这就是我想做的 public class ArrayTest { public static void main(String[] args) { String commaSeparated = "item1,null,item1,null,item3"; String [] items = commaSeparated.split(","); String[] result = remove
public class ArrayTest {
public static void main(String[] args) {
String commaSeparated = "item1,null,item1,null,item3";
String [] items = commaSeparated.split(",");
String[] result = removeNull(items);
System.out.println(Arrays.toString(result));
}
public static String[] removeNull(String[] items) {
ArrayList<String> aux = new ArrayList<String>();
for (String elem : items) {
if (elem != null) {
aux.add(elem);
}
}
return (String[]) aux.toArray(new String[aux.size()]);
}
}
改变
到
.split
函数返回一个字符串数组,因此那些您期望为null
的元素实际上不是,它们是“null”
字符串。您的removeNulls()
方法实际上会删除null字符串,但请记住,当您执行String.split
时,实际上,您正在创建一个值恰好为“null”的非null字符串
所以改变这个
if (elem != null) {
对此,要说明“空”
removeNull(String[])
工作正常,测试失败。考虑创建这样的测试输入:
public static void main(String[] args) {
String [] items = {"item1",null,"item1",null,"item3"};
String[] result = removeNull(items);
System.out.println(Arrays.toString(result));
}
顺便说一句,这是一个考虑泛型的好地方。如果希望方法签名看起来像T[]removeNull(T[]input)
,该怎么办。这可能会为您提供一些有趣的选择和更通用的最终产品 对于流:
public static void main(String[] args) {
String commaSeparated = "item1,null,item1,null,item3";
String[] items = commaSeparated.split(",");
String[] result = Arrays.stream(items)
.filter(s -> s != null && !s.equals("null"))
.toArray(String[]::new);
System.out.println(Arrays.toString(result));
}
字符串“NULL”与引用为“代码> null 不同。请考虑下面的外壳:<代码> EELM < /代码>。如果OP想要取消<代码>“null”<代码>或<代码>“null”<代码>好调用。将equals
更改为equalsIgnoreCase
。
if (elem != null) {
if (elem != null && !elem.equalsIgnoreCase("null")) {
public static void main(String[] args) {
String [] items = {"item1",null,"item1",null,"item3"};
String[] result = removeNull(items);
System.out.println(Arrays.toString(result));
}
public static void main(String[] args) {
String commaSeparated = "item1,null,item1,null,item3";
String[] items = commaSeparated.split(",");
String[] result = Arrays.stream(items)
.filter(s -> s != null && !s.equals("null"))
.toArray(String[]::new);
System.out.println(Arrays.toString(result));
}