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资源不足且业务服务器资源丰富,但由于全部查询条件均为手写,对错误排查来说有很大的麻烦。