我想从我的ArrayList中删除对象。但它没有按预期工作。以下是我的代码。
public static void validateXML(ArrayList<MyClass> ArrayvalidRequestResponsePairs,boolean result)
{
MyClass MyclassObject = new MyClass();
if(result == true)
{
// code
}
else
{
ArrayvalidRequestResponsePairs.remove(MyclassObject.requestFile);
}
}
但该值未被删除。代码有什么问题?
答案 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。无论如何,这是一种非常奇怪的方法行为。你能解释一下你想做什么吗?