如何从数组中删除空值/元素

时间:2013-10-04 23:17:20

标签: java

再次需要帮助。抱歉。如何从数组中删除空值?这是我到目前为止所得到的。

int unikCount = 0;
String c = " ";
for (int i = 0; i < a.length; i++) {
    for (int j = 0; j < a.length; j++) {
        if (tempAry[i].equals(tempAry[j])) {
            unikCount++;
        }
        if (unikCount > 1) {
            tempAry[j] = c;
            unikCount = 1;

        }

    }
    unikCount = 0;
}
for (i = 0; i < a.length; i++) {
    if (tempAry[i] != c) {
        unikCount++;
    }

}
System.out.println(unikCount);

for (int i = 0; i < a.length; i++) {
    for (int j = 1; j < a.length; j++) {
        if (tempAry[i].equals(tempAry[j])) {
            if (tempAry[i] == c) {
                count++;
                if (tempAry[j] != c) {
                    count++;
                    tempAry[j] = tempAry[i];

                }
            }
        }
    }

}
count = 0;
for (int i = 0; i < a.length; i++) {
    System.out.println(tempAry[i]);
}

*删除部分位于&#34; System.out.println(unikCount)&#34;之后。感谢即将到来的帮助。顺便说一句,不能使用哈希和arraylist。

3 个答案:

答案 0 :(得分:2)

您可以像这样检查null

if ( null == someObject ) 
{
    // do things
}

无法从数组中删除元素并使其自动缩小。您必须使用临时数组来保存值,创建一个新大小的数组并传输所有这些项。

更有效的方法是使用List

答案 1 :(得分:0)

查看您的逻辑(正确缩进):

if(tempAry[i].equals(tempAry[j])) {                      
    if(tempAry[i] == c) {           
       count++;
       if(tempAry[j] != c) {
           count++;
           tempAry[j] = tempAry[i];

       }
    }
}

没有任何意义。你为什么要检查tempAry[j] != c 里面的内容 if(tempAry[i] == c) ???

您的意思是使用if...else吗?

答案 2 :(得分:0)

int j = 0;
Object[] temp = new Object[a.length];
for (int i = 0; i < a.length; i++) {
    if (a[i] != null) {
        temp[j++] = a[i];
    }
}
Object[] newA = new Object[j];
System.arraycopy(temp, 0, newA, 0, j);

如果数组是例如String的数组,您当然会将“Object”更改为“String”。如果“null”表示空字符串,则if测试将被适当更改。