不管是Map还是List拆分,在实际项目中,最大的好处是针对于大数据处理进行优化,可以更好的结合多线程,设置线程队列,来完成单线程的所有任务,这样不仅对节省了不少使用资源,更提高了运行效率。
Map拆分
public static void main(String[] args) throws Exception {
Map<String, String> map = new HashMap<String, String>();
map.put("aa1", "bbb");
map.put("aa2", "bbb");
map.put("aa3", "bbb");
map.put("aa4", "bbb");
map.put("aa5", "bbb");
//map.put("aa6", "bbb");
//map.put("aa7", "bbb");
Map<String, String> subMap = new HashMap<String, String>();
int i = 0;
for (String key : map.keySet()) {
subMap.put(key, map.get(key));
if ((i + 1) % 2 == 0) {//如果用2来求模,能够被整出,则重新实例一个Map,这里的数字根据自己实际情况修改。
System.out.println(subMap);
subMap = new HashMap<String, String>();
}
i++;
}
if (map.size() % 2 != 0) {
System.out.println(subMap);
}
}
输入如下:
List拆分
//拆分数
double splitCount = 2;
List<String> list_ = new ArrayList<String>();
list_.add("1");
list_.add("2");
list_.add("3");
list_.add("4");
list_.add("5");
//list总长度
int listCount = list_.size();
//循环数
int listSplitCount = 0;
if (listCount <= splitCount)
listSplitCount = 1;
else {
//向上取整计算,取最接近的整数
listSplitCount = (int) Math.ceil(listCount / splitCount);
}
int lasttno = listCount;
List<String> list_s = null;
for (int i = 0; i < listSplitCount; i++) {
// (i + 1) * 拆分数
double splitEndNum = (i + 1) * splitCount;
//拆分最大值 如果大于 list总长度,则以最大值为最大截取数
if (splitEndNum > listCount){
lasttno = listCount;
}else{
//拆分最大值 如果小于 list总长度, 则(i + 1) * 拆分数做最大截取数
lasttno = (int) ((i + 1) * splitCount);
}
list_s = list_.subList((int) (i * splitCount), lasttno);//截取
System.out.println("list_s 拆分后长度:"+list_s.size());
for (String string : list_s) {
System.out.println(string);
}
}
输入如下:
测试类源码下载地址:http://download.csdn.net/detail/weiweicissy_2012/6989303