您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。