类型一:list按照指定每个list长度分割
/** * 分隔列表 * @param list * @param len * @return */ public static List<List<String>> splitList(List<String> list, int len) { if (list == null || list.size() == 0 || len < 1) { return null; } List<List<String>> result = new ArrayList<List<String>>(); int size = list.size(); int count = (size + len - 1) / len; for (int i = 0; i < count; i++) { List<String> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1))); result.add(subList); } return result; } |
类型二:list平均分割list长度分割
/** * 平均分割list */ public static <T> List<List<T>> averageAssign(List<T> source,int n){ List<List<T>> result=new ArrayList<List<T>>(); //(先计算出余数) int remaider=source.size()%n; //然后是商 int number=source.size()/n; //偏移量 int offset=0; for(int i=0;i<n;i++){ List<T> value=null; if(remaider>0){ value=source.subList(i*number+offset, (i+1)*number+offset+1); remaider--; offset++; }else{ value=source.subList(i*number+offset, (i+1)*number+offset); } result.add(value); } return result; } |
测试1
public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); list.add("f"); list.add("g"); List<List<String>> slist = ListUtil.splitList(list,3); System.out.println(slist); } // 得到 [[a, b, c], [d, e, f], [g]] |
测试2
public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); list.add("f"); list.add("g"); List<List<String>> slist = ListUtil.averageAssign(list,3); System.out.println(slist); } // 得到 [[a, b, c], [d, e], [f, g]] |