很多时候在处理数据的时候, 尤其是大批量的数据 + 网络访问,在服务端会有很长的计算时间。因此把数据进行分组会加快处理速度。
过程- 分组个数设置循环次数求法结果集的收集对结果集进行业务逻辑处理
private static int getForeachTimes(int numOfGroup, int total) {
if (total%numOfGroup == 0) {
return total/numOfGroup;
}
int i = total / numOfGroup;
return i+1;
}
private static void doBiz(ArrayList测试代码块list, int numOfGroup) { int total = list.size(); int times = getForeachTimes(numOfGroup, total); System.out.println("需要循环的次数:" + times ); HashMap > integerListHashMap = new HashMap<>(); for (int i = 0; i < times; i++) { ArrayList strings = new ArrayList<>(); for (int j = 0; j < numOfGroup; j++) { if (i* numOfGroup + j <= list.size() - 1) { strings.add(list.get(i* numOfGroup + j)); } } integerListHashMap.put(i, strings); } List resultList = new ArrayList<>(); Iterator >> iterator = integerListHashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry > next = iterator.next(); List value = next.getValue(); System.out.println("分组信息:" + JSON.toJSONString(value)); // 写业务逻辑过程,全部封装到一个list容器中去。 // dubbo服务,http服务请求第三方。 // list list2 = HTTPClientUtils.doPost("www.baidu.com", value); // resultList.addAll(list2) } // 最后在对resultList这个结果集进行业务处理即可。 }
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
int numOfGroup = 2;
doBiz(list, numOfGroup);
}
测试结果
需要循环的次数:3 分组信息:["a","b"] 分组信息:["c","d"] 分组信息:["e"]小结
记录一个分组处理的小算法,后续遇见类似的场景,粘贴代码即可。



