最近有业务涉及到集合拆分,总结下,方便以后查找。
1、将一个数组拆分成多个数组:
/** * 将数组分割成多个数组 * @param array 要分割的数组 * @param size 每个子数组大小 * @return */ private DynamicObject[][] splitArray(DynamicObject[] array, int size){ int length = array.length; int numOfArrays = (int) Math.ceil((double) length / size); DynamicObject[][] splittedArray = new DynamicObject[numOfArrays][]; int start = 0; int end; for (int i = 0; i < numOfArrays; i++) { end = Math.min(start +size,length); splittedArray[i] = Arrays.copyOfRange(array,start,end); start += size; } return splittedArray; }
public static void main(String[] args) throws ParseException { DynamicObject[][] splitArray = splitArray( list.toArray(new DynamicObject[list.size()]),3000); for(DynamicObject[] a : splitArray){ SaveServiceHelper.save(a); } }
2、将List按照一定的大小分成多个List(分割List)
import com.google.common.collect.Lists
List<List<DynamicObject>> lists= Lists.partition(list, 3000);