溫馨提示×

溫馨提示×

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

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

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

發(fā)布時間:2021-10-23 17:42:38 來源:億速云 閱讀:590 作者:柒染 欄目:大數(shù)據(jù)

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

編程中的需求

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

思路詳解

  • 入?yún)ⅲ阂粋€大的list

  • 出參:n個小的list

  • 思路:像小學(xué)做除法一樣。 10/3=3余1. 10條數(shù)據(jù),分成3個list,那每個list分3個還多1個,那只有前面的都多分1個,第一個list分3個然后加1個余數(shù)等于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;  //先計算出余數(shù)
       int number=source.size()/n;  //然后是商
       int offset=0;//偏移量(用以標(biāo)識加的余數(shù))
       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;
  }

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

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI