gpt4 book ai didi

JAVA 8 过滤具有任何匹配属性的对象列表

转载 作者:行者123 更新时间:2023-12-02 08:48:37 25 4
gpt4 key购买 nike

我的要求是通过与任何属性匹配的字符串来过滤对象列表。例如,假设 Contact 类具有三个属性:街道、城市、电话。

我知道java流过滤器是如何工作的,我必须将输入字符串与每个属性进行比较,如下所示:

contactList.stream().filter(contact -> contact.getStreet().equals("dubai") || 
contact.getCity().equals("dubai") || .......).collect(Collectors.toList());

但是,如果一个类具有 20 多个属性且列表大小超过 80,000 个,则将每个属性与输入字符串进行比较会影响性能。所以我的问题是,Java 或任何其他库是否支持使用任何匹配属性过滤列表?如下:

contactList.stream().filter(contact -> contact.anyProperty.equals("dubai").collect(Collectors.toList());

有人可以帮我解决这个问题吗,谢谢。

最佳答案

您可以使用findAny。一旦找到候选人,这一切就会结束:

Optional<Contact> contact = contactList.stream().filter(contact -> contact.getStreet().equals("dubai") || 
contact.getCity().equals("dubai") || .......).findAny();

或者,如果您只需要此类对象存在的信息,请使用 anyMatch:

boolean exists = contactList.stream().anyMatch(contact -> contact.getStreet().equals("dubai") || 
contact.getCity().equals("dubai") || .......);

关于JAVA 8 过滤具有任何匹配属性的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60538682/

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