我最近一直在学习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%的变化)该对象要去的索引该怎么办放置?我可以将其删除为“药水”吗?
我只是在学习,可能会有很多误解,对不起,如果我说或假设有些愚蠢。感谢您的关注。
答案 0 :(得分:4)
排序答案:否
为了从数组中删除元素(无论数组的类型),您应该知道要删除/编辑的元素的索引。
您的案例的解决方法
1)如果您有要删除的对象的引用
i)使用List class的实现(例如Arraylist)来存储对象
因此,当您拥有对象的引用时,可以使用
将其删除objetosList.remove(objectToBeDeleted);
ii)在您的数组中使用common lang的ArrayUtils
ArrayUtils.removeElement(objetos_inv, objectToBeDeleted);
2)如果没有对象的引用,则应在数组中进行搜索,方法是使用值来获取所需对象的索引,然后将该索引用于任何进一步的操作。 / strong>
private Objetos findObjetoByNombre(Objetos[] objetos, String nombre){
for(Objetos objeto: objetos){
if(objeto.getNombre().equals(nombre){
return objeto;
}
}
return null;
}
答案 1 :(得分:0)
我不确定确切要做什么,但是如果您想要对象的“集合”(例如数组),并且想要通过对象而不是索引来获取所需的对象,应该看Set。
也许只有arrayList应该这样做。
答案 2 :(得分:0)
您可以使用Common lang的ArrayUtils。
array = ArrayUtils.removeElement(数组,元素) 在这里,您可以检查元素并调用方法以删除元素
答案 3 :(得分:0)
关于您的描述,我认为您需要的是地图。您要存储许多Objetos对象并通过“ nombre”变量的值进行访问。
尝试使用Hashmap:
public static void main(String[] args) {
Objetos objetos = new Objetos();
objetos.setNombre("Potion");
objetos.setAdicion(1);
Map<String, Objetos> objetosMap = new HashMap();
objetosMap.put(objetos.getNombres(), objetos);
}
现在,您可以通过其nombre
值访问地图中的Objetos对象。