截取ArrayList<E> 中的某一段并改变原来的list

本文介绍了一种在Java中使用ArrayList的subList方法高效删除指定区间元素的技巧,通过实例演示了如何从一个包含2000个元素的列表中移除序号为4到200的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.例如:

ArrayList<String> list = new ArrayList<>();
for(int i = 0;i<2000;i++){
   list.add("序号为"+i+"的羊");
}

如果我们要删除序号为4--200的羊;

可以使用

list.subList(4,201).clear();

这样之后的list中将不包含序号为4--200的羊

他遵循的仍是包前不包后的原则

 

``` /** * 协同算法(按收藏推荐) */ @RequestMapping("/autoSort2") public R autoSort2(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){ String userId = request.getSession().getAttribute("userId").toString(); String inteltypeColumn = "typename"; List<StoreupEntity> storeups = storeupService.selectList(new EntityWrapper<StoreupEntity>().eq("type", 1).eq("userid", userId).eq("tablename", "news").orderBy("addtime", false)); List<String> inteltypes = new ArrayList<String>(); Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString()); List<NewsEntity> newsList = new ArrayList<NewsEntity>(); //去重 if(storeups!=null && storeups.size()>0) { List<String> typeList = new ArrayList<String>(); for(StoreupEntity s : storeups) { if(typeList.contains(s.getInteltype())) continue; typeList.add(s.getInteltype()); newsList.addAll(newsService.selectList(new EntityWrapper<NewsEntity>().eq(inteltypeColumn, s.getInteltype()))); } } EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>(); params.put("sort", "id"); params.put("order", "desc"); PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params)); List<NewsEntity> pageList = (List<NewsEntity>)page.getList(); if(newsList.size()<limit) { int toAddNum = (limit-newsList.size())<=pageList.size()?(limit-newsList.size()):pageList.size(); for(NewsEntity o1 : pageList) { boolean addFlag = true; for(NewsEntity o2 : newsList) { if(o1.getId().intValue()==o2.getId().intValue()) { addFlag = false; break; } } if(addFlag) { newsList.add(o1); if(--toAddNum==0) break; } } } else if(newsList.size()>limit) { newsList = newsList.subList(0, limit); } page.setList(newsList); return R.ok().put("data", page); }```根据上方文件,帮我仔细说明该文件运用的协同过滤算法的具体效果说明
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值