Java 是否可以按对象条件而不是索引从数组中删除对象?

Java 是否可以按对象条件而不是索引从数组中删除对象?,java,Java,我最近一直在学习Java数组,我正在练习做一些存储、移除和交换对象的清单或邮袋 但是我想知道是否有一种方法,例如,移除一个对象,因为它是那个对象,而不是因为它在列表中的一个确定索引中 我有一个带构造函数的类,它分配了两个属性:“Nombre”(对象名称)和adicion(int,因为这可以在游戏中使用,所以我们可以说这是使用药剂恢复的hp数) 然后,我有了这个对象数组: static Objetos[] objetos_inv = new Objetos[15]; objetos_inv[0]

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

但是我想知道是否有一种方法,例如,移除一个对象,因为它是那个对象,而不是因为它在列表中的一个确定索引中

我有一个带构造函数的类,它分配了两个属性:“Nombre”(对象名称)和adicion(int,因为这可以在游戏中使用,所以我们可以说这是使用药剂恢复的hp数)

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

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%)对象将被放置的索引,该怎么办?我可以把它作为“药水”去掉吗


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

我不确定您到底想做什么,但是如果您想要对象的“集合”(如数组),并且希望得到对象所需的集合,而不是索引,那么您应该查找


当然,也许只有一个arrayList可以做到这一点。

简短回答:不

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

您案例的变通方法

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

i)使用(f.e)的实现来存储对象

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

objetosList.remove(objectToBeDeleted);
ii)在阵列中使用commons lang的阵列直到

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;
}

你可以使用commons lang的ArrayUtils

array=ArrayUtils.removeElement(数组,元素)
在这里,您可以检查元素并调用一个方法来删除与您的描述相关的元素,我认为您需要的是一个映射。您需要存储许多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);
    }
publicstaticvoidmain(字符串[]args){
Objetos Objetos=新Objetos();
药水;
setAdicion目标(1);
Map objetosMap=新HashMap();
put(objetos.getNombres(),objetos);
}

现在,您可以通过对象的
nombre
值访问地图中的对象。

因此,术语“删除对象是因为该对象,而不是因为该对象位于列表中的确定索引中”,您的意思是删除对象是因为某些成员变量中的特定值?没错,谢谢,我不是本地人,如果我们在特定的语境中,有时很难找到确切的单词。非常感谢!不直接相关,但你知道为什么我的构造函数不需要参数吗?我正在尝试创建一个新对象,如下所示
Objetos potion=new Objetos()public Objectos(String nombre){this.nombre=nombre;}
并用
Objeto Objeto=new Object(“您的值”)调用它当我创建对象时
Objetos药水=新的Objetos(“药水”,20),并使用
objetos\u inv.add(药剂)将其添加到我的数组中
如果我尝试
System.out.println(objetos_inv)
我会得到一个空输出这是一个单独的问题,为了让社区更好地理解这个问题,请发布一个新问题,详细说明你所做的事情,并发送链接:)在这里,提前谢谢你,很抱歉打扰你。
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);
    }