首页 > 解决方案 > 从对象 ArrayList 中删除对象

问题描述

我创建了一个对象 ArrayList,

private ArrayList<Object> objects;

我在构造函数中初始化它。

public ObjectManager(Handler handler) {
    this.handler = handler;

    objects = new ArrayList<>();
}

然后将此 ArrayList 绘制/添加到画布中。

public void renderObjects(Graphics g) {
    handler.getObjectManager().addObject(new InstanceOfObject(handler, 1000, 1000, g));
}

addObject() 方法将对象添加到 ArrayList。

public void addObject(Object e) {
    objects.add(e);
}

我想稍后通过使用类似的代码行来删除这个对象,

public void removeObject(Object e) {
    objects.remove(e);
}

但是我不知道该怎么做,因为我不知道如何传入要删除的对象。我能想到传入对象的唯一方法是执行以下操作:

handler.getObjectManager().removeObject(new InstanceOfObject(handler, 1000, 1000, g));

我什至不知道这是否可行,因为它正在删除一个“新”对象。即使是这样,“g”也没有定义。如果我在构造函数中定义它,我必须更改许多不同的东西,这会导致错误(通常是 NullPointerException),但即使这样我也无法弄清楚如何通过传入 Graphics g 参数来调用此方法。

标签: javaobjectarraylist

解决方案


您的问题不清楚,但这可能会有所帮助。

实现的List接口ArrayList已经提供了一个remove方法。您无需重新发明它。

对象引用

要删除对象,请保留并传递对特定对象的引用。

Dog alice = new Dog( "Alice" , "Labrador" ) ;
Dog bob = new Dog( "Bob" , "Chihuahua" ) ;

List< Dog > dogs = new ArrayList<>() ;
dogs.add( alice ) ;
dogs.add( bob ) ;
…
dogs.remove( bob ) ;

索引号

或者,记住包含要删除的对象的列表的槽(索引)。将该从零开始的索引号传递给该remove方法。


推荐阅读