首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从数组中删除空元素(Java)

从数组中删除空元素(Java)
EN

Stack Overflow用户
提问于 2017-01-30 20:09:12
回答 5查看 7.6K关注 0票数 4

我试图通过将现有的元素复制到一个新的数组中来删除数组中的空元素。然而,新数组的初始化导致我的返回值为null,即使我在for循环中初始化它。

代码语言:javascript
代码运行次数:0
运行
复制
public String[] wordsWithout(String[] words, String target) {
    for(int i = 0; i < words.length; i = i +1){
        String store[] = new String[words.length];
        if (words[i] == target){
            words[i] ="";
        }
        else if(words[i] != target){
            words[i] = store[i];
        }       
    }
    return words;
}
EN

回答 5

Stack Overflow用户

发布于 2017-01-30 20:24:57

实际上我不确定你想要实现什么,但是如果你想从数组中移除一个空字符串,你可以在java8中使用streams和filters来实现,就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
String[] objects = Arrays.stream(new String[]{"This","", "will", "", "", "work"}).filter(x -> !x.isEmpty()).toArray(String[]::new);
票数 8
EN

Stack Overflow用户

发布于 2017-01-30 20:41:32

数组是不可变的,因此大小保持不变,因此您需要创建一个新数组,因此,如果您根据旧数组的大小创建新数组,则仍将具有空元素

如果只想使用数组,则需要对数组中的非空元素进行计数,以获得新Array的大小。使用List/ArrayList更容易

代码语言:javascript
代码运行次数:0
运行
复制
public String[] wordsWithout(String[] words, String target) {
    List<String> tempList=new ArrayList<String>();
    for(int i = 0; i < words.length; i = i +1){

        if (words[i]!=null||words[i].trim().length()>0){
            tempList.add(words[i]);
        }

    }
    return (String[]) tempList.toArray();
}
票数 2
EN

Stack Overflow用户

发布于 2017-01-30 20:26:53

要检查相等性,可以使用.equals()方法i-e string2 1.equals(String2),要检查不相等性,可以使用相同的方法,但不使用not(!)运算符i-e。!string2 1.equals(String2)。您应该在循环外部声明store数组,因为在每次迭代中,它都会在名为store的对象上创建一个新对象。在else条件中,执行storei = wordsi。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41935581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档