gpt4 book ai didi

java - 您可以通过对象条件而不是索引从数组中删除对象吗?

转载 作者:行者123 更新时间:2023-11-30 06:40:49 26 4
gpt4 key购买 nike

我最近一直在学习 Java 数组,并且正在练习做一些库存或袋子,您可以在其中存储、移除和交换对象。

但我想知道是否有办法,例如,删除一个对象,因为它是该对象,而不是因为它在列表中的确定索引中......

我有一个带有构造函数的此类,它分配了 2 个属性:'Nombre'(对象的名称)和 adicion(一个整数,因为它可以在游戏中使用,我们可以说这是你恢复的 hp 数通过使用药水)

public class Objetos {
String nombre;
int adicion;
public void objetos(String nomb, int sumar){
adicion = sumar;
nombre = nomb;
}

public void setNombre (String nomb){
nombre = nomb;
}

public String getNombre(){
return nombre;
}


public void setAdicion (int sumar){
adicion = sumar;
}

public int getAdicion(){
return adicion;
}
}

然后,我有这个对象数组:

static Objetos[] objetos_inv = new Objetos[15];
objetos_inv[0] = new Objetos();
objetos_inv[0].nombre = "Potion";
objetos_inv[0].adicion = 20;
System.out.println(objetos_inv[0]);

我添加了一个对象,现在我当然可以通过他的索引位置 (0) 删除、更改或打印它,但是如果我不知道(发生 100%)对象将要到达的索引放置?我可以因为它是“药水”而将其移除吗?

我只是在学习,可能有很多误解,抱歉如果我说或假设了一些愚蠢的事情。感谢您的关注。

最佳答案

简答:否

为了从数组中删除一个元素(无论什么类型的数组)您应该知道您要删除/编辑的元素的索引。

针对您的案例的解决方法

1) 如果您有要删除的对象的引用

i) 使用 List class 的实现(fe Arraylist) 存储您的对象

因此,当您拥有对象的引用时,您可以使用

将其删除
objetosList.remove(objectToBeDeleted);

ii) 在数组中使用 commons lang 的 ArrayUtils

ArrayUtils.removeElement(objetos_inv, objectToBeDeleted);

2) 如果您没有对象的引用,您应该在数组中进行搜索,按值获取所需对象的索引,然后使用该索引进行任何进一步的操作。

private Objetos findObjetoByNombre(Objetos[] objetos, String nombre){
for(Objetos objeto: objetos){
if(objeto.getNombre().equals(nombre){
return objeto;
}
}
return null;
}

关于java - 您可以通过对象条件而不是索引从数组中删除对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com