将ids按数量分组放入List集合

纵然是瞬间 提交于 2020-03-23 09:55:33

当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;
    }

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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!