gpt4 book ai didi

java - 找出对象列表是否包含具有指定字段值的内容?

转载 作者:IT老高 更新时间:2023-10-28 21:11:29 41 4
gpt4 key购买 nike

我有一个从数据库收到的 DTO 列表,它们有一个 ID。我想确保我的列表包含具有指定 ID 的对象。显然,在这种情况下创建具有预期字段的对象将无济于事,因为 contains() 调用 Object.equals(),它们不会相等。

我想出了一个这样的解决方案:创建一个接口(interface) HasId,在我所有的 DTO 中实现它,并使用具有 contains(Long id) 的新类继承 ArrayList方法。

public interface HasId {
void setId(Long id);
Long getId();
}

public class SearchableList<T extends HasId> extends ArrayList<T> {
public boolean contains(Long id) {
for (T o : this) {
if (o.getId() == id)
return true;
}
return false;
}
}

但在这种情况下,我无法将 List 和 ArrayList 类型转换为 SearchableList...我会接受,但想确保我不是在发明轮子。

编辑(16 年 10 月):

当然,随着 Java 8 中 lambda 的引入,实现这一点的方法很简单:

list.stream().anyMatch(dto -> dto.getId() == id);

最佳答案

我建议像你写的那样创建简单的静态方法,没有任何额外的接口(interface):

public static boolean containsId(List<DTO> list, long id) {
for (DTO object : list) {
if (object.getId() == id) {
return true;
}
}
return false;
}

关于java - 找出对象列表是否包含具有指定字段值的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7481346/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com