一个简单的遍历需求
今天开发一个前端遍历展示的接口,被前端怼了
看图需求很简单
- 多行展示
- 每行多个,可显示更多,每行可左右滑动
为了图省事简单组装一下直接返回回去了,方便是真的方便,前端生气也是真的生气,可以简单对这个横向、纵向接口压缩一下
- 横向空间上,可以取分页,前端自己传,无论是懒加载还是更多,根据pageSize、返回的数据量决定,可以提供给前端自定义的空间
- 纵向空间上,入参加入 type,前端自己写死对应枚举
这样无论扩展还是数据冗余都有比较大的改善
/** * 兑换页信息 */ @RequestMapping("tab") public ResultVO<ShopTapBrieVo> tab(@RequestHeader(HttpHeadConstant.lgType) int lgType, @RequestParam int tabType, @RequestParam int pageIndex, @RequestParam int pageSize) { return ResultVO.success(shopService.tab(tabType, pageIndex, pageSize, lgType)); } // service public ShopTapBrieVo tab(int pageIndex, int pageSize, int type, int lgType) { for (ShopTab shopTab : ItemManager.getShopTabs()) { if (shopTab.getId() != type) { continue; } ShopTapBrieVo vo = new ShopTapBrieVo(); LanguageInfo language = LanguageManger.getLanguage(Module.SHOP, ItemManager.TYPE2_SHOP_TAP_NAME, 0, shopTab.getId(), lgType); if (language != null) { vo.setTapTitle(language.getContext1()); } else { vo.setTapTitle(shopTab.getName()); } List<ShopDefineBrieVo> collect = ItemManager.getShopTabDefines(shopTab.getId()) .stream() .map(e -> new ShopDefineBrieVo(e, lgType)) .collect(Collectors.toList()); // 内存分页 int total = collect.size(); int fromIndex = Math.min(pageIndex * pageSize, total); int toIndex = Math.min((pageIndex + 1) * pageSize, total); vo.setVos(collect.subList(fromIndex, toIndex)); return vo; } return null; }
由于规则数据是预加载到内存中,所以直接使用内存分页,由于 subList 采用的是视图,并不会创建多余的对象,这里顺便回顾一下其他知识 java集合中sublist()的坑
这是一段防爬代码块,我不介意文章被爬取,但请注明出处 console.log("作者主页:https://www.cnblogs.com/Go-Solo"); console.log("原文地址:https://www.cnblogs.com/Go-Solo/p/18332136");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库