当前位置: 首页 > news >正文

app小程序网站开发织梦网站打开速度慢

app小程序网站开发,织梦网站打开速度慢,衡水微信网站建设,鲜花网站设计使用情景 今天开发上遇到一个搜索的需求,要求可以多选,模糊查询。我首先和前端沟通,前端多选后使用逗号分隔,拼成字符串传输给我,我后端再进行具体的处理。 具体处理 初步构想 由于需要查询的字段也是一个长的字符…

使用情景

今天开发上遇到一个搜索的需求,要求可以多选,模糊查询。我首先和前端沟通,前端多选后使用逗号分隔,拼成字符串传输给我,我后端再进行具体的处理。

具体处理

初步构想

由于需要查询的字段也是一个长的字符串,那我就需要将参数逗号拆分后形成数组或者List,遍历进行查询,查询后再将结果组合起来,最后进行去重返回前端。

分析问题

如果使用这种暴力查询的话,一旦多选的子项多了,后端拆分后形成的数组或List也会相应变大,然后又进行遍历查询,导致效果会低下,响应时间过长,所以需要进行优化处理。

最终方案

在网上查阅一番后,发现Java8新特性Stream流中anyMatch,可以解决这个问题。

anyMatch简介

判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。

  • 接口定义:
    • boolean anyMatch(Predicate<? super T> predicate);
  • 方法描述:
    • 在anyMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 Predicate<T> 是接收一个T类型参数,然后经过逻辑验证返回布尔值结果。这里anyMatch表示,判断的条件里,任意一个元素符合条件,就返回true值。
示例代码
  @Testpublic void a17() {List<User> list = new ArrayList<>();list.add(new User("张三", 12, "南京"));list.add(new User("李四", 13, "北京"));list.add(new User("王五", 14, "苏州"));list.add(new User("王五", 17, "苏州"));List<User> userList = new ArrayList<>();userList.add(new User("李四", 13, "北京"));userList.add(new User("王五", 20, "广州"));// 获取两个集合中有相同名字或者年龄相同的,只要满足其中一个条件即可,只会返回list集合里面的元素,有先后顺序返回List<User> users1 = list.stream().filter(a -> userList.stream().anyMatch(b -> a.getName().equals(b.getName()) || a.getAge() == b.getAge())).collect(Collectors.toList());// 获取两个集合中相同名字并且年龄相同的,必须同时满足两个条件List<User> 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() {Stream<String> 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}

最终实现核心代码

List<String> dss = Arrays.asList(diseaseSyndrome.split(","));list = list.stream().filter(e -> dss.stream().anyMatch(a->e.getDiseaseSyndrome().contains(a))).collect(Collectors.toList());

http://www.yayakq.cn/news/410495/

相关文章:

  • 珠海市 网站建设中国100强企业排行榜
  • 设计软件培训班学费一般多少给公司网站做seo的好处
  • 曲阜人网站唯品会网站页面设计
  • 网站怎么排名在哪找人做网站
  • 唐山做网站那家好外贸论坛找客户
  • 德州有做网站的工装公司名字怎么起
  • 企业制作网站教育机构网站源码
  • C#如何做简易网站wordpress yarpp
  • 网站如何做淘宝支付宝支付wordpress文章改背景色
  • 网站规划管理系统百度权重
  • 早晨网站建设自己做培训需要网站吗
  • windows10前段网站建设做旅游的网站的要素
  • 多少钱能运营一个网站网站你懂我意思正能量免费下载
  • 北京建设网站圣辉友联wordpress修改 版权
  • 福建省建设工程继续教育网站唐河做网站
  • 可以做笔试面试题的网站自己做网站的服务器
  • 临海如何制作公司网站框架深圳网站建设51duoshi
  • 河南企业网站制作wordpress标题后缀
  • 网站分为哪几种wordpress资源分享主题
  • 网站做百度地图怎么做呢电脑网站怎么制作
  • 如何制作自己的网站模版北京朝阳区小区
  • 广东住房和城乡建设厅网站造价万网域名解析面板
  • 网站访问量怎么增加wordpress基础模板
  • 淄博网站建设价格flash网址
  • 环保科技东莞网站建设厦门模版网站
  • 湖南网站开发企业甘肃电子商务网站建设
  • 沈阳中联做网站网络营销八大工具
  • 网站刷单账务处理怎么做国外代理服务器免费
  • 企业局域网站建设模板掏宝网网站建设评价表
  • 海尔网站建设信息北京网站设计公司兴田德润放心