【发布时间】:2015-11-24 20:45:43
【问题描述】:
我正在尝试从具有对象特定属性的列表中删除重复数据。
【问题讨论】:
-
是的。但如果你想要一个具体的答案,那就提出一个具体的问题。
标签: java collections
我正在尝试从具有对象特定属性的列表中删除重复数据。
【问题讨论】:
标签: java collections
如果此特定类型的标识和相等性基于您担心的这些字段的值,则更好的选择可能是实现 equals 和 hashCode。
这样您就可以构建一组这些对象,根据定义,这些对象不会包含重复的实例。
如果这不可行(例如,如果您无权访问此类的源代码),则可以将 anyMatch 与谓词一起使用(仅适用于 Java 8):
return list.stream().anyMatch(element -> element.getField().equals(someValue));
如果您关心更多字段,也可以将它们包含在谓词中。
在 Java
boolean contains = false;
Iterator<MyObject> = list.iterator();
while(iterator.hasNext() && !contains) {
contains = iterator.next().getField().equals(someValue);
}
return contains;
【讨论】:
覆盖类的 equals(Object obj) 方法。将 obj 投射到您的班级并检查您的某些文件。
然后将所有内容插入到一个集合中。集合集合上不会有任何重复。
【讨论】: