【发布时间】:2020-06-17 16:34:46
【问题描述】:
我的要求是通过匹配任何属性的字符串过滤对象列表。
例如,假设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());
谁能帮帮我,谢谢。
【问题讨论】:
-
似乎您需要在数据库中进行全文搜索。你考虑过/调查过吗?
-
没有库可以消除任务所需的基本操作。您想要检查所有属性,您需要检查所有属性。任何更好看的解决方案只会隐藏实际工作。
标签: java oop arraylist java-8 java-stream