2

我最近一直在学习 Java 数组,我正在练习做一些清单或袋子来存储、移除和交换对象。

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

我有一个带有构造函数的类,它分配了 2 个属性:“Nombre”(对象的名称)和 adicion(一个 int,因为这可以在游戏中使用,我们可以说这是您使用 a 恢复的 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% 发生)要放置对象的索引怎么办?我可以将其删除为“药水”吗?

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

4

4 回答 4

4

简短的回答:没有

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

针对您的情况的解决方法

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

i) 使用 List 类(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;
}
于 2019-07-16T11:22:25.590 回答
0

我不确定你想要做什么,但是如果你想要一个对象的“集合”(例如一个数组)并且你想通过对象而不是索引来获取你应该查看的对象设置

也许只是一个 arrayList 应该这样做。

于 2019-07-16T11:13:08.053 回答
0

关于您的描述,我认为您需要的是地图。您想要存储许多 Objetos 对象并通过“nombre”变量的值访问它。

尝试使用哈希图:

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 对象。

于 2019-07-16T11:28:02.033 回答
0

您可以使用 commons lang 的 ArrayUtils。

array = ArrayUtils.removeElement(array, element) 这里可以查看元素并调用方法移除元素

于 2019-07-16T11:23:34.053 回答