Java对List集合拆分成多个集合
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class ListSpilt {
/**
* 将一个List按n个元素拆分
* @param resList
* @param count
* @return
* @param <T>
*/
public static <T> List<List<T>> split(List<T> resList, int count){
List<List<T>> ret=new ArrayList<>();
int pre = 0 ;
if(resList.size() % count == 0){
pre = resList.size() / count;
}else{
pre = resList.size() / count +1 ;
}
for(int num = 0 ; num < pre ; num++){
ret.add(resList.stream().skip(num*count).limit(count).collect(Collectors.toList()));
}
return ret;
}
/**
* 将一个List等分成n个list
* @param source
* @param n
* @param <T>
* @return
*/
public static <T> List<List<T>> averageAssign(List<T> source, int n) {
List<List<T>> result = new ArrayList<>();
//(先计算出余数)
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;
}
}