中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA工具如何將一個list均分成n個list

發布時間:2021-10-23 17:42:38 來源:億速云 閱讀:593 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關JAVA工具如何將一個list均分成n個list,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

編程中的需求

分批處理一塊大數據: 例如,從(Excel ,txt ,數據庫 )中一行一行的讀數據,最終讀了1W+數據,然后對這1W+數據又要進行業務處理,一條一條的遍歷太慢了。可以把這個大的list拆成n個,然后用n個線程去跑,這樣效率就會快很多。下述代碼就是其中用到關于的一個工具類: 把一個List均分成n個小的list

思路詳解

  • 入參:一個大的list

  • 出參:n個小的list

  • 思路:像小學做除法一樣。 10/3=3余1. 10條數據,分成3個list,那每個list分3個還多1個,那只有前面的都多分1個,第一個list分3個然后加1個余數等于4個。第2個list分3個,然后最后一個list分3個。代碼如下,可以直接拷貝運行

解決方案

/**
    * 將一個list均分成n個list
    * @param source
    * @return
    */
   public static <T> List <List<T>> averageAssign(List<T>source,intn){
       List <List<T>> result=new ArrayList<List<T>>();
       int remainder=source.size()%n;  //先計算出余數
       int number=source.size()/n;  //然后是商
       int offset=0;//偏移量(用以標識加的余數)
       for(int i=0;i<n;i++){
           List<T>value;
           if(remainder>0){
               value=source.subList(i*number+offset, (i+1)*number+offset+1);
               remainder--;
               offset++;
          }else{
               value=source.subList(i*number+offset, (i+1)*number+offset);
          }
           result.add(value);
      }
       return result;
  }

關于JAVA工具如何將一個list均分成n個list就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岐山县| 绥滨县| 丹凤县| 监利县| 东明县| 齐河县| 上饶市| 鹤壁市| 图木舒克市| 隆昌县| 滨海县| 玉门市| 建昌县| 韩城市| 峨边| 云梦县| 江口县| 涿州市| 韶关市| 营口市| 宁都县| 息烽县| 台湾省| 额尔古纳市| 肇庆市| 海南省| 大冶市| 湖州市| 穆棱市| 江华| 汉阴县| 石泉县| 大足县| 栖霞市| 乌兰察布市| 临江市| 仲巴县| 京山县| 赤峰市| 兴仁县| 梁山县|