![](/img/trans.png)
[英]How to set property values in new object from object from List and get a new List of the same objects in which properties are set using java 8?
[英]how to delete object with same values from a java list
说我有一个对象,其id: String
和name: String
字段。
如果我有这些对象的数组,则使用remove方法,因为从技术上讲,Object指针是不同的,所以我要删除的对象不会被删除。
例如:
List<ObjectA> newList = new ArrayList<>();
// Objecta1(id: a, name: a)
// Objecta2(id: b, name: b)
// Objecta3(id: b, name: b)
newList.add(objecta1);
newList.add(objecta2);
newList.remove(objecta3); --> will equal false
清除此错误的最干净方法是什么?
我四处搜索,发现可以使用removeIf并在那里进行比较。 我也可以使用Iterator,然后自己比较这些字段。 只是想知道在Java中是否有一种规范,干净的方式来做到这一点。 谢谢。
您的对象应@Override
equals
方法。
将以下内容添加到您的课程中:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ObjectA)) return false;
ObjectA objectA = (ObjectA) o;
if (getId() != objectA.getId()) return false;
return getName() != null ? getName().equals(objectA.getName()) : objectA.getName() == null;
}
@Override
public int hashCode() {
int result = getId();
result = 31 * result + (getName() != null ? getName().hashCode() : 0);
return result;
}
接着:
while(newList.remove(objecta3)){};
除了解决方案覆盖equals
,您还可以使用Java 8进行操作:
newList.removeIf(p -> p.getId().equals(objecta3.getId()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.