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

外包网站建设公司房地产 网站 欣赏

外包网站建设公司,房地产 网站 欣赏,网站蜘蛛怎么看,做app和网站哪个项目中有段代码逻辑是个双重for循环#xff0c;发现数据量大的时候#xff0c;直接导致数据接口响应超时#xff0c;这里记录下不断优化的过程#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…项目中有段代码逻辑是个双重for循环发现数据量大的时候直接导致数据接口响应超时这里记录下不断优化的过程算是抛砖引玉吧~ Talk is cheap,show me your code 双重for循环优化 1、数据准备2、原始双重for循环3、直接使用双重for循环查询条件增加break条件4、使用迭代器来删除内层循环中已使用或判断过的元素减少循环次数5、把要筛选的信息写成map集合遍历List时用map.get(key)来实现检索6、总结 1、数据准备 Order Data AllArgsConstructor NoArgsConstructor Builder public class Order {private Integer orderId;private String orderName; }OrderDetail Data AllArgsConstructor NoArgsConstructor Builder public class OrderDetail {private Integer orderDetailId;private Integer orderId;private String orderNums;private String orderAddress; }造测试数据 public static ListOrder getOrderTestList() {ListOrder orders new ArrayList();for (int i 1; i 50000; i) {Order order new Order();order.setOrderName(UUID.randomUUID().toString());order.setOrderId(i);orders.add(order);}return orders;}public static ListOrderDetail getOrderDetailTestList() {ListOrderDetail orderDetails new ArrayList();for (int i 30000; i 1; i--) {OrderDetail orderDetail new OrderDetail();orderDetail.setOrderAddress(UUID.randomUUID().toString());orderDetail.setOrderId(i);orderDetail.setOrderDetailId(i);orderDetails.add(orderDetail);}return orderDetails;}2、原始双重for循环 Testvoid test3() {ListOrder orderTestList getOrderTestList();ListOrderDetail orderDetailTestList getOrderDetailTestList();StopWatch stopWatch new StopWatch();stopWatch.start();// 直接使用双重for循环查询条件for (Order order : orderTestList) {int orderId order.getOrderId();for (OrderDetail orderDetail : orderDetailTestList) {if(orderId orderDetail.getOrderId() ){System.out.println(模拟数据orderAddress 业务处理...... orderDetail.getOrderAddress());}}}stopWatch.stop();System.out.println(最终耗时 stopWatch.getTotalTimeMillis());}执行结果 3、直接使用双重for循环查询条件增加break条件 Testvoid test3() {ListOrder orderTestList getOrderTestList();ListOrderDetail orderDetailTestList getOrderDetailTestList();StopWatch stopWatch new StopWatch();stopWatch.start();// 直接使用双重for循环查询条件增加break条件for (Order order : orderTestList) {int orderId order.getOrderId();for (OrderDetail orderDetail : orderDetailTestList) {if(orderId orderDetail.getOrderId() ){System.out.println(模拟数据orderAddress 业务处理...... orderDetail.getOrderAddress());break;}}}stopWatch.stop();System.out.println(最终耗时 stopWatch.getTotalTimeMillis());}执行结果 4、使用迭代器来删除内层循环中已使用或判断过的元素减少循环次数 Testvoid test3() {ListOrder orderTestList getOrderTestList();ListOrderDetail orderDetailTestList getOrderDetailTestList();StopWatch stopWatch new StopWatch();stopWatch.start();// 使用迭代器来删除内层循环中已使用或判断过的元素减少循环次数for (Order order : orderTestList) {ListIteratorOrderDetail orderDetailListIterator orderDetailTestList.listIterator();int orderId order.getOrderId();while (orderDetailListIterator.hasNext()) {OrderDetail nextOrderDetail orderDetailListIterator.next();if(orderId nextOrderDetail.getOrderId() ){System.out.println(模拟数据orderAddress 业务处理...... nextOrderDetail.getOrderAddress());orderDetailListIterator.remove();}}}stopWatch.stop();System.out.println(最终耗时 stopWatch.getTotalTimeMillis());}执行结果 5、把要筛选的信息写成map集合遍历List时用map.get(key)来实现检索 Testvoid test3() {ListOrder orderTestList getOrderTestList();ListOrderDetail orderDetailTestList getOrderDetailTestList();StopWatch stopWatch new StopWatch();stopWatch.start();//使用stream() 记得一定要判空MapInteger, String orderAddressMap orderDetailTestList.stream().collect(Collectors.toMap(OrderDetail::getOrderId, OrderDetail::getOrderAddress));for (Order order : orderTestList) {int orderId order.getOrderId();String orderAddress orderAddressMap.get(orderId);if (StringUtils.hasLength(orderAddress)) {System.out.println(模拟数据orderAddress 业务处理...... orderAddress);}}if (StringUtils.hasLength(orderAddress)) {System.out.println(模拟数据orderAddress 业务处理...... orderAddress);}stopWatch.stop();System.out.println(最终耗时 stopWatch.getTotalTimeMillis());}测试结果 6、总结 可以看出通过迭代删除或者利用map集合特性均能够有效提升查询效率。
http://www.dnsts.com.cn/news/7472.html

相关文章:

  • 建设房地产法律网站网上开小店怎么开
  • 中国建设银行网站北京网点金城武重庆森林经典台词
  • 桥南做网站南京建设局的网站
  • 米枫网站怎么做分页注册深圳公司多少钱
  • 免费网站用官微建站网站模板源码
  • 网站转化下降原因嘉兴地区有人做网站吗
  • 做外链网站有哪些全球网站排行
  • aspx做网站北京昨晚出什么大事
  • 营销型网站建设是什么意思住房和城乡建设部网站中国建造师网
  • 35互联做的网站门户网站大全
  • 怎么做美食的视频网站.gs域名做网站怎么样
  • 对网站建设心得定制网站的制作流程
  • 我要找人做网站的主页wordpress仿站教程网
  • 宫廷计有哪些网站开发的wordpress弹窗注册代码
  • 网站空间查询wordpress 蓝色主题
  • 响应式外贸网站案例wordpress 指定页面内容
  • 郑州网站优化排名安康网站制作
  • 手机网站建设软件有哪些网站代码规范性
  • 专门做童装的网站东莞培训网站建设
  • 外贸俄罗斯俄语网站开发免费做问卷的网站好
  • 广州网站开发制作微信公众号手机网站
  • 网站建设和维护html5网站链接标签
  • 搜索引擎是网站吗简述电子商务网站建设流程
  • 金华专业的网站建设网站运营之怎样做好seo优化
  • 网站开发平台官方网站怎么注册
  • 上海机械网站建设丽江建设工程信息网站
  • 六安网站推广获客app做一个简单网页多少钱
  • 网站建设需要确定的问题百度权重4
  • 网站制作呼和浩特怎么做跟别人一样的网站
  • 商务网站建设推荐软件设计培训