简易首屏随机视频插入一定比例用户关注喜好推荐视频并去重

/**
*  游戏视频列表
* @Author: yjw 2022-12-12
* @return:
*/
public List<VideoEntity> videoList(Vo vo){
	Integer count = videoDao.listVideoTotal(vo);
	//视频总数超过分页时获取随机分页起始index
	if (count > vo.getPageSize){
           Random r = new Random();
           int random = r.nextInt(count  - vo.getPageSize);
           vo.setStart(random);
     }
	List<VideoEntity> videos1 = videoDao.listVideo(vo); //随机分页集合
	if (count > vo.getPageSize && vo.getPage == 1){
	  	 List<VideoEntity> videos2 = videoDao.listVideo2(vo); //关注喜好作者集合
	  	//首次获取视频若有关注喜好作者,提升关注作者作品比例,并去重
	  	 if (videos2 != null && videos2.size() > 0){ 
		  		 videos2.addAll(videos1);
	             Map<String, VideoEntity> m = new HashMap<>();
	             videos2.stream()
	             		.forEach(v -> {
	                     	VideoEntity ve = m.get(v.getId().toString());
	                        if (ve == null && m.size() < vo.getPageSize){
	                            m.put(v.getId().toString(), v);
	                        }
	                    });
	            videos1 = m.values().stream().collect(Collectors.toList());
	     }
  	}
  	//list乱序
  	Collections.shuffle(videos1);
  	return videos1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值