/**
* 解决因为链表过长,sql查询慢的问题
* 使用分治算法,先切分链表,然后查询结果,最后合并结果
*
* @author lingpy
* @since 1.0
*/
public class DivideAndConquerUtil {
/**
*
* @param dataList 元数据
* @param exceuter 执行类
* @return
* @throws Exception
*/
public static <R extends Map, E> R query(List<E> dataList,Executer<R,E> exceuter)throws Exception{
return query(dataList,exceuter,100);
}
/**
*
* @param dataList
* @param exceuter
* @param subArrayLength 切分的粒度
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static <R extends Map, E> R query(List<E> dataList,Executer<R,E> exceuter,int subArrayLength)throws Exception{
if(dataList == null || dataList.size() <= subArrayLength){
return exceuter.execute(dataList);
}
R result = null;
int start = 0, end = start;
while(start < dataList.size()){
end = start + subArrayLength;
if(end > dataList.size()){
end = dataList.size();
}
R r = exceuter.execute(dataList.subList(start, end));
if(result == null){
result = r;
}else{
result.putAll(r);
}
start = end;
}
return result;
}
public interface Executer<R,E>{
R execute(List<E> dataList) throws Exception;
}
}
相关文章
- 01-14sql关联查询更新速度慢的问题
- 01-14解决因为链表过长,sql查询慢的问题
- 01-14Jenkins----解决因为网络导致插件下载慢的问题【配置】
- 01-14Spark-Sql Hint 解决小文件导致查询慢的问题
- 01-14android之Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
- 01-14解决不能修改 Mysql 慢查询 long_query_time 值的问题
- 01-14解决PL/SQL查询结果乱码的问题
- 01-14mysql查询上个月日期_mysql 日期查询当天,当月,上个月,当年的数据sql语句函数的使用快速解决问题
- 01-14[TimLinux] MySQL 导入sql文件数据慢的问题解决办法
- 01-14使用hibernate原生sql查询,结果集全为1的问题解决