有没有办法从 Java 的链表中删除第一次出现的特定对象类型?
Is there a way to remove the first occurence of a specific object type from a linked list in Java?
我有一个名为 objects 的“gameObjects”链接列表,其中包含 2 个子类 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 的游戏对象。
我有一个名为 objects 的“gameObjects”链接列表,其中包含 2 个子类 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 的游戏对象。