在Java中从ArrayList中删除对象

在Java中从ArrayList中删除对象,java,arraylist,Java,Arraylist,我想从我的ArrayList中删除对象。但它并没有像预期的那样工作。下面是我的代码 public static void validateXML(ArrayList<MyClass> ArrayvalidRequestResponsePairs,boolean result) { MyClass MyclassObject = new MyClass(); if(result == true) { //

我想从我的ArrayList中删除对象。但它并没有像预期的那样工作。下面是我的代码

public static void validateXML(ArrayList<MyClass> ArrayvalidRequestResponsePairs,boolean result)
    {
        MyClass MyclassObject = new MyClass();
        if(result == true)
        {
            // code
        }
        else
        {
            ArrayvalidRequestResponsePairs.remove(MyclassObject.requestFile);
        }
    }
但该值并没有被删除。代码有什么问题?

您的变量ArrayvalidRequestResponsePairs的类型

ArrayList<MyClass>
从它看来,它根本不像MyClass类型的实例


NB MyclassObject是您刚刚创建的一个实例。因此,该实例肯定不在列表中,更正代码以从列表中删除MyclassObject毫无意义。

您试图删除的对象与列表类型不同。更改以下代码可能会解决此问题:

ArrayvalidRequestResponsePairs.remove(MyclassObject);

嗯,我试着猜你要做什么。您可能希望删除与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。无论如何,这是一种非常奇怪的方法行为。你能解释一下你想做什么吗?

几乎所有的事情……这真的毫无意义,对不起。也许试着解释一下你想做什么,并展示一些你发布的代码的上下文。你应该先发布足够的代码,让任何人都知道它有什么问题。ArrayvalidRequestResponsePairs是MyClass类的arrayList,然后将MyClass对象的属性传入。remove methodpost您的整个代码..您的代码可疑有几个原因。。。请尝试阅读更多关于java基础知识和OOP的内容。在我看来,您的代码就像学校的课程一样,尽可能多地查找错误。这从很大程度上来说是有问题的。公众为什么?为什么?没有删除结果吗?什么?!?ArrayList是否使用泛型?ArrayvalidRequestResponsePairs使用java标准变量名约定,输入参数结果的结果名?代码本身很奇怪,我不敢评论它。
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);
    }
}