Java-根据用户分组排序-内存计算法

文章介绍了使用Java进行内存计算,根据用户ID分组数据并进行排序的方法。首先,从数据源获取信息,然后通过遍历构建用户分组映射。接着,实现了分页逻辑以限制返回的结果数量。这种方法适用于CPU资源有限但服务器资源充足的场景,但手动编写查询条件可能增加错误排查的难度。
摘要由CSDN通过智能技术生成

Java-根据用户分组排序-内存计算法

1、数据源定义
数据列表(其他数据源请同步转换,此处不细说数据源查询):

private Map<String,Object> dataMap;
private Map<String,Object> userMap;

2、分组逻辑

Map<String,List<Object>> userGroupMap = new HashMap<>();
for(String dataId : this.dataMap.keySet()){
	Object dataInfo = this.dataMap.get(dataId);
	String userId = dataInfo.getUserId();
	for(String userCode : this.userMap.keySet()){
		if(userId.equals(userCode)){
			List<Object> userGroupList = this.userGroupMap.get(userId);
			userGroupList .add(dataInfo);
			this.userGroupMap.put(userId,userGroupList);
		}
	}
}

3、分页逻辑

int pageNo;
int pageNum;
List<Object> reList = new ArrayList<>();
int nowAddNum = 0;
for(String userId : this.userGroupMap){
	for(Object reInfo : this.userGroupMap.get(userId)){
		if(nowAddNum>=(pageNo-1)*pageNum&&nowAddNum<pageNo*pageNum){
			reList.add(reInfo);
			if(reList.size() == pageNum){
				return reList;
			}
		}
		nowAddNum++;
	}
}
return reList;

4、注意事项
内存计算法适用于数据库cpu资源不足且业务服务器资源丰富,但由于全部查询条件均为手写,对错误排查来说有很大的麻烦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值