通过删除某些对象来压缩java中的数组

时间:2013-01-04 20:23:39

标签: java arrays null

对于我的计算机科学课,我们应该采用一组对象{A,C,D,C,C,F,C,G}并将某个对象的所有元素设置为null。对象是C:{A,null,D,null,null,F,null,G} 然后我们应该将所有剩余的对象移动到数组的前面{A,D,F,G,null,null,null,null} ... 到目前为止,我试过这个,但我无法用我的方法找到问题:

public  static  void  compact  (Object[] vec, Object item) {

    int a=0;
    for(int i=0; i < vec.length; i++)
    {
        if(vec[i]==item)
        {
            vec[i] = null;
        }
        else
        {
            vec[i]=vec[a];
            a++;
        }
    }
    for(int  b=a; b < vec.length-(a-1); b++)
    {
        vec[b]=null;
    }
}

请帮忙吗?

2 个答案:

答案 0 :(得分:4)

if(vec[i]==item)

永远不要使用==来比较对象,请使用equals()(并且,当您定义新类时,请务必以实际方式实施equals()hashCode()

当然可能还有其他问题,但由于你甚至不知道它失败了什么,我不会太在意。

答案 1 :(得分:0)

我认为除非测试null,否则你需要equals()而不是==。您正在使用对象。