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;
        }
    }

  • 相关阅读:
    POJ 2418 Hardwood Species(STL在map应用)
    在反思性学习
    孙陪你,了解它的权力--Kinect结合的发展Unity3D游戏应用开发
    python在windows通过安装模块错误
    Linux怪哉ntfs
    Js 表单序列化
    微信开发
    Ecshop开发
    FTP配置和用户设置权限
    wget
  • 原文地址:https://www.cnblogs.com/lingepeiyong/p/3965807.html
Copyright © 2011-2022 走看看