zoukankan      html  css  js  c++  java
  • 解决因为链表过长,sql查询慢的问题

    /**
     * 解决因为链表过长,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;
        }
    }

  • 相关阅读:
    简练网软考知识点整理-项目选择和优先级排列方法
    简练网软考知识点整理-项目基线
    简练网软考知识点整理-项目质量控制七工具之排列图
    简练网软考知识点整理-项目经理应具备的技能能力
    简练网软考知识点整理-项目招投标相关法律
    Scala集合库、模式匹配和样例类
    Scala函数式编程
    Scala面向对象—类详解2(继承相关)
    gVerify验证码
    Scala面向对象—类详解
  • 原文地址:https://www.cnblogs.com/lingepeiyong/p/3965807.html
Copyright © 2011-2022 走看看