Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java数组中删除空值_Java_Arrays - Fatal编程技术网

从java数组中删除空值

从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

我试图从csv字符串转换的数组中删除空值

这就是我想做的

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));
}