我可以检查List是否包含一个在java中包含具有特定值的字段的对象吗?

时间:2015-11-24 20:45:44

标签: java collections

我正在尝试从List中删除具有对象特定属性的重复数据。

2 个答案:

答案 0 :(得分:1)

如果此特定类型的标识和相等性基于您担心的这些字段的值,则更好的选择可能是实现equalshashCode

通过这种方式,您可以构建一组这些对象,根据定义,这些对象不会包含重复的实例。

如果这不可能(例如,如果您无权访问此类的源),则可以将anyMatch与谓词一起使用(仅适用于Java 8):

return list.stream().anyMatch(element -> element.getField().equals(someValue));

如果您关心更多字段,也可以将它们包含在谓词中。

在Java< = 7中,您将不得不迭代值:

boolean contains = false;
Iterator<MyObject> = list.iterator();
while(iterator.hasNext() && !contains) {
    contains = iterator.next().getField().equals(someValue);
}

return contains;

答案 1 :(得分:0)

覆盖类的equals(Object obj)方法。将obj投射到yoir课程并检查您的某些文件。

然后将全部插入到Set中。集合集合不会有任何重复。