方法 将ids按数量分组放入List集合
当ids数量成千上万的时候,如果还要使用in方法进行查询,ids可以先分组得到idList再循环idList查询;
code:
/** * 将id串分隔成若干份 * @param vids * @param len * @return */ public static List<String> splitSqlParamsToList(String ids, int len){ List<String> vidList = new ArrayList<>(); StringBuffer buffer = new StringBuffer(); String[] split = ids.split(","); int length = split.length; // 分隔vids串,单个大小len长度 String value = ""; for (int i = 0; i < length; i++) { value = split[i]; if(isNullOrEmpty(value)){ continue; } // (i + 1) % len != 0 if(isNullOrEmpty(buffer.toString())){ buffer.append(value); }else{ buffer.append("," + value); } if(buffer.toString().split(",").length % len != 0){ if(i != (length - 1)){ // 不是最后一位 continue; } } vidList.add(buffer.toString()); buffer = new StringBuffer(); } return vidList; }
code2(重写):
/** * 将list分割后拼接成字符串 * @param list * @param separator * @return */ public static String listToString(List<String> list, String separator) { StringBuilder builder = new StringBuilder(); if(!CollectionUtils.isEmpty(list)){ for (String val : list) { if(builder.length() > 0){ builder.append(separator); } builder.append(val); } } return builder.toString(); } /** * 将id串分隔成若干份(重写) * @param ids * @param len * @return */ public static List<String> splitSqlParamsToList(String ids, int len){ // 将id串分组 List<String> list = new ArrayList<>(); String[] idArr = ids.split(","); List<String> idList = new ArrayList<>(); for (int i = 0; i < idArr.length; i++) { if(idArr[i] != null && !"".equals(idArr[i])){ idList.add(idArr[i]); } } System.out.println(idList); int size = idList.size(); System.out.println(size); int lastIndex = size - 1; int fromIndex = 0; int toIndex; boolean flag = false; do { toIndex = fromIndex + len; List<String> child; if (toIndex >= lastIndex) {// 最后一组 child = idList.subList(fromIndex, size); System.out.println("开始:" + (fromIndex + 1) + ",结束:" + size + "。" + child); list.add(listToString(child, ",")); break; } child = idList.subList(fromIndex, toIndex); System.out.println("开始:" + (fromIndex + 1) + ",结束:" + toIndex + "。" + child); list.add(listToString(child, ",")); fromIndex += len; flag = fromIndex <= lastIndex; } while (flag); return list; }
test:
String vids = "1,2,3,4,5,6,7,8,,22,,11,,,10,12"; List<String> list = splitSqlParamsToList(vids, 6); for (int i = 0; i < list.size(); i++) { System.out.println("第" + i + "组:" + list.get(i)); }
result:
第0组:1,2,3,4,5,6 第1组:7,8,22,11,10,12
雨淋淋过的季节

浙公网安备 33010602011771号