Java 使用同一对象的另一个实例从ArrayList中删除对象

Java 使用同一对象的另一个实例从ArrayList中删除对象,java,arraylist,gson,Java,Arraylist,Gson,所以我有一个未定义的对象,我想用另一个具有相同值的未定义对象从数组列表中删除它,这样我就可以有一个类来处理我抛出的每个对象,而不必为每个对象类型创建不同的方法 问题是,尽管对象的内容相同,但由于它是另一个实例,所以总体值不同 比如: 味精。TradeMsg@1d97b82 味精。TradeMsg@1a3337fb\ 即使这两个对象具有相同的值,但它们是不同的,并且不会使用.equals返回true 所以我的问题是,当一个对象具有相同的字段但我不知道对象类是什么时,如何从数组列表中删除它 还是有更

所以我有一个未定义的对象,我想用另一个具有相同值的未定义对象从数组列表中删除它,这样我就可以有一个类来处理我抛出的每个对象,而不必为每个对象类型创建不同的方法

问题是,尽管对象的内容相同,但由于它是另一个实例,所以总体值不同

比如: 味精。TradeMsg@1d97b82 味精。TradeMsg@1a3337fb\

即使这两个对象具有相同的值,但它们是不同的,并且不会使用.equals返回true

所以我的问题是,当一个对象具有相同的字段但我不知道对象类是什么时,如何从数组列表中删除它

还是有更简单的方法

代码:

//valueToDelete可以是任何类型,如用户、项目、交易。。。 public void deleteFromJsonObject值ToDelete,字符串fileLocation引发IOException{ Gson Gson=新Gson; ArrayList oldValues=新ArrayList; //如果valueTiDelete为null,则将删除文件的全部内容 如果valueToDelete!=null{ //从数组中获取内容并将其添加到ArrayList 对于对象oldValue:UpdateLodValuesFileLocation{ oldValues.addgson.fromJsonoldValue.toString,valueToDelete.getClass; } //这不起作用,因为对象是两个不同的实例,但仍然具有所有相同的字段。 //当对象具有相同的字段但不知道对象类是什么时,如何从数组列表中删除该对象? oldValues.removevalueToDelete; } //在文件中写入更新的内容 Writer Writer=新文件writerFileLocation; gson.toJsonoldValues,编写器; writer.flush; writer.close; }
要验证未知类和可变类的两个对象所包含的值是否相等,可以

覆盖可能进入该列表的所有类中的Object::equals和Object::hashCode,或者 用于探测对象内部并深入检查是否相等 第二个是很难做到的,如果不小心做的话,很容易出错。 例如,这样做是为了实现脏检查功能,所以我不会说这是一种不好的做法,但肯定会停留在灰色地带

旁注:有这样的需求通常意味着需要重新设计模型
你的问题一针见血:它们不会以.equals返回真值。您需要重写.equals方法,以便它根据您的喜好检测等效对象。在编写equals方法之后,大多数IDE也会为您生成hashCode方法。