有没有一种方法可以从Java中的链表中删除第一个出现的特定对象类型



我有一个"gameObjects";称为对象,包含Beat和Player这两个子类的实例。当调用一个方法时,我想删除链表中节拍的第一个实例。实际上,该方法从专门用于节拍的单独链表中删除节拍,但由于节拍是使用第二个链表渲染的,因此它们不会消失。

public static void hit(){
//Method for player to hit the beat
Beat currentObject = (Beat) Game.beatLinkedList.getFirst();
int distanceToPlayer = currentObject.getX() - 200;
if (distanceToPlayer <= 50){
score +=100;
}
Game.beatLinkedList.removeFirst();
System.out.println("Beat Linked List Length: " + Game.beatLinkedList.size());
System.out.println("Score: " + score);
}

我曾尝试使用removeFirstOccurence,但可能误解了它的含义,我确信语法是不正确的。

Handler.object.removeFirstOccurrence(Beat.beat);

如果这个问题还需要其他东西,我会在需要的时候添加,但我认为几乎所有的东西都在那里,如果没有,很抱歉。

您可以使用instanceof关键字进行检查,例如以下代码:

import java.io.IOException;
import java.util.ArrayList;

class GameObject {
String name;
public GameObject(String name) {
this.name = name;
}
}
class Player extends GameObject {
public Player(String name) {
super(name);
}
}
class Entity extends GameObject {
public Entity(String name) {
super(name);
}
}
public class Main {
public static void main(String[] args) throws IOException {
ArrayList<GameObject> list = new ArrayList<>();
Player john = new Player("John");
Entity doe = new Entity("Doe");
Player jane = new Player("Jane");
list.add(john);
list.add(doe);
list.add(jane);
for (GameObject obj : list) {
if (obj instanceof Player) {
list.remove(obj);
break;
}
}
}
}

删除类型为Player的第一个游戏对象。

相关内容

  • 没有找到相关文章

最新更新