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

哪个网站做职客比较好 比较正规佛山有什么好玩的

哪个网站做职客比较好 比较正规,佛山有什么好玩的,企业网站推广方案范例,商务局网站群建设方案项目中有段代码逻辑是个双重for循环,发现数据量大的时候,直接导致数据接口响应超时,这里记录下不断优化的过程,算是抛砖引玉吧~ Talk is cheap,show me your code! 双重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 List<Order> getOrderTestList() {List<Order> 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 List<OrderDetail> getOrderDetailTestList() {List<OrderDetail> 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() {List<Order> orderTestList = getOrderTestList();List<OrderDetail> 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() {List<Order> orderTestList = getOrderTestList();List<OrderDetail> 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() {List<Order> orderTestList = getOrderTestList();List<OrderDetail> orderDetailTestList = getOrderDetailTestList();StopWatch stopWatch = new StopWatch();stopWatch.start();// 使用迭代器来删除内层循环中已使用或判断过的元素,减少循环次数for (Order order : orderTestList) {ListIterator<OrderDetail> 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() {List<Order> orderTestList = getOrderTestList();List<OrderDetail> orderDetailTestList = getOrderDetailTestList();StopWatch stopWatch = new StopWatch();stopWatch.start();//使用stream() 记得一定要判空Map<Integer, 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.yayakq.cn/news/904272/

相关文章:

  • 网站qq启动链接怎么做做网站 做手机app要学什么
  • 今网科技网站建设大连网站建设收费
  • 地方门户网站建设要求那些域名可以做后缀做网站
  • 有什么做网站的国企品牌设计公司简介
  • 京东网站建设目的太阳代理ip官网
  • 做企业网站注意什么做羞羞的网站
  • 上海制作网站的公司wordpress网站mip改造
  • 新能源汽车价格趋势广州网站优化公司咨询
  • wordpress 恢复初始莱芜网站优化招聘网
  • 舒城网站建设手机版网站与app
  • 南昌网站建设公司咨询商城建设方案
  • wordpress子域名网站常见的域名注册网站
  • 分销商城网站开发价格制作网站 公司
  • 建设企业网站用动态还是静态ios wordpress发文章
  • 网站版面布局结构什么是移动网站开发
  • 多仓库版仓库管理网站建设源码电子商务公司logo
  • 广东华星建设集团网站火山安卓软件开发平台
  • 网站开发提案模板国内包装设计网站
  • 移动公司营销网站设计广州哪里能看海
  • 网站运营推广的方法有哪些昆明做网站的公司
  • 怎么做网页制作网站模板网站原文件怎么上传空间
  • 诚聘网站开发人员网站底部浮动代码
  • 网站建设可以一次性进损益吗网站开发培训训
  • 中山网站建设文化价位直通车代运营
  • 网站介绍视频怎么做的18款禁用软件黄a免费
  • 做蛋糕视频的网站网站建设分什么行业
  • 个人做交通违章查询网站违法吗怎么开网店新手入门
  • 网站开发研究综述网站开发相关书籍
  • 深圳网站建设 罗湖集翔网大网站建设
  • 信用网站建设的必要性电商网站的建设的主要目的