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

网站页面设计图片素材马鞍山网站建设费用

网站页面设计图片素材,马鞍山网站建设费用,网站开发私单哪里接,工业网站开发商在工作中,经常性的会出现在两张表中查找相同ID的数据,许多开发者会使用两层for循环嵌套,虽然实现功能没有问题,但是效率极低,一下是一个简单的优化过程,代码耗时凑从26856ms优化到了748ms。 功能场景 有两…

在工作中,经常性的会出现在两张表中查找相同ID的数据,许多开发者会使用两层for循环嵌套,虽然实现功能没有问题,但是效率极低,一下是一个简单的优化过程,代码耗时凑从26856ms优化到了748ms。

功能场景


有两份List类型的数据,分别是UestList(用户表)和AccountList(账户表),要根据用户的id从AccountList表中查找对应的账户信息,并进行后续的处理,示例如下:

存数据(伪代码):5w条user数据,3w条Account数据 

 @Dataclass User{private Long userId;private String name;}@Dataclass Account{private Long userId;private String content;}public class NestedLoopOptimization{public static List<User> getUserList(){List<User> users =new ArrayList<>();for(inti =1; i <=50000; i++) {User user =newUser();user.setName(UUID.randomUUID().toString());user.setUserId((long) i);users.add(user);}return users;}public static List<UserMemo> getAccountTestList(){List<Account> accountList =newArrayList<>();for(inti =30000; i >=1; i--) {Account account =new Account();account.setContent(UUID.randomUUID().toString());account.setUserId((long) i);accountList.add(account);}return accountList;}// ... 后续代码
最直接的实现方式(未优化的代码):
public static void nestedLoop(List<User> usersList, List<UserMemo> accountList) {for (User user : usersList) {Long userId = user.getUserId();for (Account account : accountList) {if (userId.equals(account.getUserId())) {String content = account.getContent();// System.out.println("模拟数据content 业务处理......" + content); // 避免打印影响测试结果}}}
}

 耗时:约数万毫秒,效率很低,数据量小的话无关紧要,如果随着系统的迭代数据量骤增的时候,就会极其耗时。

第一步优化:添加break 

每个userId在AccountList中只有一条对应的数据,所以找到匹配项之后就可以跳出内循环:

public static void nestedLoop(List<User> usersList, List<UserMemo> accountList) {for (User user : usersList) {Long userId = user.getUserId();for (Account account : accountList) {if (userId.equals(account.getUserId())) {String content = account.getContent();// System.out.println("模拟数据content 业务处理......" + content); // 避免打印影响测试结果break;}}}
}

第一步优化结束之后任需要很多耗时,但是比起嵌套循环好很多。

第二步优化:使用Map优化 

public static void mapOptimizedLoop(List<User> userTestList, List<UserMemo> accountList) {Map<Long, String> contentMap = accountList.stream().collect(Collectors.toMap(UserMemo::getUserId, UserMemo::getContent));for (User user : userTestList) {Long userId = user.getUserId();String content = contentMap.get(userId);if (StringUtils.hasLength(content)) {// System.out.println("模拟数据content 业务处理......" + content); // 避免打印影响测试结果}}}

做以上优化之后,耗时显著减少,通常在数百毫秒级别。

原理:

        两层 for 循环嵌套的时间复杂度为 O(n*m),其中 n 和 m 分别为两个列表的长度。使用 Map 后,get 操作的时间复杂度接近 O(1),整体时间复杂度降为 O(n+m),避免了内循环的重复遍历。HashMap 的 get 方法内部使用了 getNode 方法来查找键值对。getNode 方法利用哈希表结构,快速定位到目标键值对。虽然在极端情况下(所有键的哈希值都相同),getNode 的时间复杂度会退化为 O(n),但在实际应用中,哈希冲突的概率很低,HashMap 的 get 操作效率通常很高。因此无需过于担心 O(n) 的最坏情况。 

        通过以上优化之后,可以显著的提高代码的执行效率,已经其健壮性,尤其是在处理大数据量的时候,使用Map优化,可以带来巨大的性能提升,避免了不必要的计算,从而实现了代码的性能。


文章转载自:

http://fkEbXQ4x.qgxnw.cn
http://PXZ7UnQk.qgxnw.cn
http://3ENK0iAv.qgxnw.cn
http://V4VPszmr.qgxnw.cn
http://hTp1J6ki.qgxnw.cn
http://TRMS6WQB.qgxnw.cn
http://CXsFLiMB.qgxnw.cn
http://tw6HJV4Z.qgxnw.cn
http://AOSaL0i9.qgxnw.cn
http://VTbd2XaW.qgxnw.cn
http://ruRujDWI.qgxnw.cn
http://j8SbSmho.qgxnw.cn
http://UhVKt6QA.qgxnw.cn
http://sUm8258J.qgxnw.cn
http://Msk7MDZb.qgxnw.cn
http://A9yOxPTb.qgxnw.cn
http://VhVcDz7k.qgxnw.cn
http://TYMSvYxR.qgxnw.cn
http://wBXGGUaX.qgxnw.cn
http://c3Bw7Oz3.qgxnw.cn
http://mJnNToaH.qgxnw.cn
http://FUH1D8Jk.qgxnw.cn
http://INJhRAGw.qgxnw.cn
http://mbdDtItj.qgxnw.cn
http://3vvzERg2.qgxnw.cn
http://4xWirBjd.qgxnw.cn
http://C48cUbeL.qgxnw.cn
http://ZqH3cV2q.qgxnw.cn
http://NittCMzc.qgxnw.cn
http://Apvp1Y2r.qgxnw.cn
http://www.dtcms.com/wzjs/743729.html

相关文章:

  • 专业房产网站建设公司温州微网站制作多少钱
  • 青岛网站制作系统用page打开wordpress
  • 郑州做外贸网站比较好的做网站公司
  • 网站标题改不了东莞市建设培训中心网站
  • 医院网站站群建设方案龙岩公共服务平台
  • 咸阳网站建设有哪些优化软件是什么意思
  • 网站开发技术交流群软件开发包括
  • iis网站目录权限有人说做网站赌
  • 南京商城网站开发设计手机网站建设yu
  • 可视化网站制作软件佛山关键词排名方案
  • python做简单的网站亚马逊网官网首页
  • 网站的根目录wordpress 页面改造
  • 响应式网站广州网站建设北京市朝阳区网站制作公司
  • visio网站建设流程图百度竞价价格查询
  • 网站怎么做跳站it培训课程
  • dedecms 网站 经常无法连接如何做好搜索引擎优化工作
  • 如何禁止通过ip访问网站网页设计结果分析怎么写
  • 网站开发实验的总结pc端移动端网站开发
  • 专门做橱柜衣柜效果图的网站寻找电销团队合作
  • 2003系统做网站wordpress建站后
  • 娄底优秀网站建设wordpress主题二次元
  • 外贸网站图片嵌入式软件开发工作内容
  • 百度关键词点击排名网站优化原理
  • 做资源教程网站响应式网站是什么软件做的
  • 网站里面的视频功能怎么做js网页制作代码大全
  • 网站logo怎么做wordpress伪静态原理
  • 齐河县建设局网站免费开发微信小程序的平台
  • 上海建设工程 U盘登录哪个网站构建平台还是搭建平台
  • 阿里云服务器建网站网站建设预算知乎
  • 获得网站所有关键字wordpress文学站