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

如何规避电子政务门户网站建设教训珠海网站品牌设计公司哪家好

如何规避电子政务门户网站建设教训,珠海网站品牌设计公司哪家好,广州十大网站开发公司,建设企业网站流程使用情景 今天开发上遇到一个搜索的需求,要求可以多选,模糊查询。我首先和前端沟通,前端多选后使用逗号分隔,拼成字符串传输给我,我后端再进行具体的处理。 具体处理 初步构想 由于需要查询的字段也是一个长的字符…

使用情景

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

具体处理

初步构想

由于需要查询的字段也是一个长的字符串,那我就需要将参数逗号拆分后形成数组或者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/40966/

相关文章:

  • 徐州网站制作报价丽之鑫科技网站后台怎么做
  • 新手网站建设成都关键词优化技术
  • 网站访问统计怎么做网站制作寻找客户
  • 湖北网站设计公司找人做网站多少钱
  • 网站seo案例广告设计需要学什么
  • asp iis设置网站路径seo教学实体培训班
  • 做农业的公司管理网站如何让百度分享按钮在网站每个页面都有
  • 江门网站建设费用cms建站系统介绍
  • 公司网站手机端和电脑端网络推广团队分工
  • 四川不能去的设计院抖音seo排名软件哪个好
  • 中国联通网站建设与维护网站外链作用
  • 网站模板 兼容用户体验较好的网站
  • 对于职业规划做的好的网站wordpress 会话
  • 甘肃省专业做网站召开网站建设培训会
  • 绵阳的网站制作公司哪家好卖做游戏点卡网站创业
  • 做网站负责人有法律风险吗wordpress菜伪静态
  • 网站实施过程海南建设银行招聘网站
  • 室内装饰设计师证书有用吗网站优化seo方案
  • 怎么用百度云做网站空间南昌有哪些企业网站
  • 寻花问柳专做男人的网站广东建设信息公开网站
  • 长春网站建设兼职meetsh网站建设
  • 网站前端包括哪些关于婚纱摄影的网站模板
  • 网站菜单分类怎么做的制作一个网站的费用
  • 电商网站开发技术方向开平市网站建设
  • 网站通栏广告素材如何在手机上开发软件
  • 齐河专业企业网站建设上海中学数学
  • 汕头网站关键排名学校官网网页设计
  • 网站开发的完整流程图凡科建站有哪些弊端
  • 泉州一个网站多少钱如何做网站页面
  • 网站为什么被挂马做二手家具回收哪个网站好