一个简单的遍历需求

今天开发一个前端遍历展示的接口,被前端怼了

看图需求很简单

  1. 多行展示
  2. 每行多个,可显示更多,每行可左右滑动

为了图省事简单组装一下直接返回回去了,方便是真的方便,前端生气也是真的生气,可以简单对这个横向、纵向接口压缩一下

  1. 横向空间上,可以取分页,前端自己传,无论是懒加载还是更多,根据pageSize、返回的数据量决定,可以提供给前端自定义的空间
  2. 纵向空间上,入参加入 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");
posted @   Go_Solo  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示