List集合切分成多個子集合

**
     * 拆分集合
     * 用於批處理,在批量操作數據庫時候數據太大的時候最好還是先拆分
     *
     * @param <T>
     * @param resList 要拆分的集合
     * @param count   每個集合的元素個數
     * @return 返回拆分後的各個集合
     */
    public static <T> List<List<T>> split(List<T> resList, int count) {
        if (resList == null || count < 1) {
            return null;
        }
        List<List<T>> ret = new ArrayList<List<T>>();
        int size = resList.size();
        if (size <= count) { //數據量不足count指定的大小
            ret.add(resList);
        } else {
            int pre = size / count;
            int last = size % count;
            //前面pre個集合,每個大小都是count個元素
            for (int i = 0; i < pre; i++) {
                List<T> itemList = new ArrayList<T>();
                for (int j = 0; j < count; j++) {
                    itemList.add(resList.get(i * count + j));
                }
                ret.add(itemList);
            }
            //last的進行處理
            if (last > 0) {
                List<T> itemList = new ArrayList<T>();
                for (int i = 0; i < last; i++) {
                    itemList.add(resList.get(pre * count + i));
                }
                ret.add(itemList);
            }
        }
        return ret;
    }

調用方式

  List<List<PageData>> listListPageDatas = split(pd,14);

pd代表一個數據量很大的集合,14代表切分後每個子集合的數據個數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章