从ArrayList<>中删除对象在Java中

时间:2013-12-16 11:53:04

标签: java arraylist

我想从我的ArrayList中删除对象。但它没有按预期工作。以下是我的代码。

public static void validateXML(ArrayList<MyClass> ArrayvalidRequestResponsePairs,boolean result)
    {
        MyClass MyclassObject = new MyClass();
        if(result == true)
        {
            // code
        }
        else
        {
            ArrayvalidRequestResponsePairs.remove(MyclassObject.requestFile);
        }
    }

但该值未被删除。代码有什么问题?

3 个答案:

答案 0 :(得分:3)

您的变量ArrayvalidRequestResponsePairs属于

类型
ArrayList<MyClass>

表示它仅包含MyClass的实例。另一方面,您尝试删除

MyclassObject.requestFile

来自它,它看起来不像MyClass类型的实例。

NB MyclassObject是您刚刚创建的实例。因此,列表中的实例肯定是,更正代码以从列表中删除MyclassObject是没有意义的。

答案 1 :(得分:0)

您正在尝试删除与List类型不同的对象。可能更改为下面的代码将解决问题:

ArrayvalidRequestResponsePairs.remove(MyclassObject);

答案 2 :(得分:0)

嗯。我试着猜猜你要做什么。可能是您要删除与MyclassObject中具有相同requestFile的对象。那你必须做那样的事情:

public static void validateXML(ArrayList<MyClass> ArrayvalidRequestResponsePairs,boolean result)
{
    MyClass MyclassObject = new MyClass();
    if(result == true)
    {
        // code
    }
    else
    {
        ArrayList<MyClass> itemsToDelete = new ArrayList<MyClass>(ArrayvalidRequestResponsePairs.size());
        for (MyClass item : ArrayvalidRequestResponsePairs) {
            if (item.requestFile.equals(MyclassObject.requestFile)) {
                itemsToDelete.add(item);
            }
        }
        ArrayvalidRequestResponsePairs.removeAll(itemsToDelete);
    }
}

但是这仍然没有意义,因为你在过滤之前就创建了新的MyClass,并且该对象的字段requestFile可能为null。无论如何,这是一种非常奇怪的方法行为。你能解释一下你想做什么吗?