网页制作模板的网站那个网站教你做毕设的
news/
2025/9/28 11:55:16/
文章来源:
网页制作模板的网站,那个网站教你做毕设的,wordpress html cdn,网站开发平台及常用的开发工具使用情景
今天开发上遇到一个搜索的需求#xff0c;要求可以多选#xff0c;模糊查询。我首先和前端沟通#xff0c;前端多选后使用逗号分隔#xff0c;拼成字符串传输给我#xff0c;我后端再进行具体的处理。
具体处理
初步构想
由于需要查询的字段也是一个长的字符…使用情景
今天开发上遇到一个搜索的需求要求可以多选模糊查询。我首先和前端沟通前端多选后使用逗号分隔拼成字符串传输给我我后端再进行具体的处理。
具体处理
初步构想
由于需要查询的字段也是一个长的字符串那我就需要将参数逗号拆分后形成数组或者List遍历进行查询查询后再将结果组合起来最后进行去重返回前端。
分析问题
如果使用这种暴力查询的话一旦多选的子项多了后端拆分后形成的数组或List也会相应变大然后又进行遍历查询导致效果会低下响应时间过长所以需要进行优化处理。
最终方案
在网上查阅一番后发现Java8新特性Stream流中anyMatch可以解决这个问题。
anyMatch简介 判断数据列表中是否存在任意一个元素符合设置的predicate条件如果是就返回true否则返回false。 接口定义 boolean anyMatch(Predicate? super T predicate);方法描述 在anyMatch 接口定义中是接收 Predicate 类型参数在Lamdba表达式中 PredicateT 是接收一个T类型参数然后经过逻辑验证返回布尔值结果。这里anyMatch表示判断的条件里任意一个元素符合条件就返回true值。 示例代码 Testpublic void a17() {ListUser list new ArrayList();list.add(new User(张三, 12, 南京));list.add(new User(李四, 13, 北京));list.add(new User(王五, 14, 苏州));list.add(new User(王五, 17, 苏州));ListUser userList new ArrayList();userList.add(new User(李四, 13, 北京));userList.add(new User(王五, 20, 广州));// 获取两个集合中有相同名字或者年龄相同的只要满足其中一个条件即可只会返回list集合里面的元素有先后顺序返回ListUser users1 list.stream().filter(a - userList.stream().anyMatch(b - a.getName().equals(b.getName()) || a.getAge() b.getAge())).collect(Collectors.toList());// 获取两个集合中相同名字并且年龄相同的必须同时满足两个条件ListUser users2 list.stream().filter(a - userList.stream().anyMatch(b - a.getName().equals(b.getName()) a.getAge() b.getAge())).collect(Collectors.toList());users1.forEach(item - {System.out.println(item.getName() item.getAge() item.getEmailAddress());});/** 第一种结果展示* 李四13北京* 王五14苏州* 王五17苏州*/users2.forEach(item - {System.out.println(item.getName() item.getAge() item.getEmailAddress());});/** 第二种结果展示* 李四13北京*/}Testpublic void a15() {StreamString stream Stream.of(ac, bcddddd, bd);// 判断stream中其中任何一个元素中只要有包含b字符串或者l字符串就返回trueboolean isMatch stream.anyMatch(str - str.contains(b) || str.contains(l));System.out.println(isMatch); // true}
最终实现核心代码
ListString dss Arrays.asList(diseaseSyndrome.split(,));list list.stream().filter(e - dss.stream().anyMatch(a-e.getDiseaseSyndrome().contains(a))).collect(Collectors.toList());
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920602.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!