【问题标题】:Can I check whether a List contains an object that has fields with a certain value in java?我可以检查一个 List 是否包含一个对象,该对象在 java 中具有具有特定值的字段吗?
【发布时间】:2015-11-24 20:45:43
【问题描述】:

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

【问题讨论】:

  • 是的。但如果你想要一个具体的答案,那就提出一个具体的问题。

标签: java collections


【解决方案1】:

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

这样您就可以构建一组这些对象,根据定义,这些对象不会包含重复的实例。

如果这不可行(例如,如果您无权访问此类的源代码),则可以将 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;

【讨论】:

    【解决方案2】:

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

    然后将所有内容插入到一个集合中。集合集合上不会有任何重复。

    【讨论】:

      猜你喜欢
      • 2015-09-03
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 2017-06-23
      • 2021-09-18
      • 2012-02-02
      • 2021-04-11
      相关资源
      最近更新 更多