publicstatic<T>List<List<T>>partitionList(List<T> source,int subListNumber){List<List<T>> result =newArrayList<>();int remainder = source.size()% subListNumber;int number = source.size()/ subListNumber;int offset =0;for(int i =0; i < subListNumber; 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;}