美文网首页
java 根据字符串做分页

java 根据字符串做分页

作者: xuchengsheng | 来源:发表于2017-12-23 12:50 被阅读0次

在实现阿里云推送的时候需要根据用户Id进行推送,然而拿到同事给出的数据却懵逼了,因为阿里云每次推送只能有10个用户Id,所以需要实现一个字符串分页。

同事给出数据 4,16,34,36,125,201,70665,70697,80758,80761,80765,80789 ..........

思路
  • 1 遍历字符串,并记录每一个逗号的下标,保存在数组中
  • 2 遍历每一个逗号的位置,当下标等于页数大小时进行截取存储数组中,并记录下一次截取的位置
import java.util.ArrayList;
import java.util.List;

public class PageUtil {
    
    public static void main(String[] args) {
        
        List<String> stringPaging = stringPaging(5);
        
        for (String string : stringPaging) {
            System.out.println(string);
        }
    }
    
    /**
     * @param pageSize 每页的个数
     * @return
     */
    public static List<String> stringPaging(int pageSize){
        
        String strings="4,16,34,36,125,201,70665,70697,80758,80761,80765,80789";
        
        List<String> strList=new ArrayList<>();
        
        /**
         * 获取每一个 逗 号 下标
         * */
        List<Integer> strIndexList = getIndex(strings, ",");
        
        /**
         * 如果小于需要分页的数量
         * **/
        if(strIndexList.size()<pageSize){
            strList.add(strings);
        }else{
            
            /**
             * 截取的开始位置
             * */
            int index=0;
            
            /**
             * 每页的个数
             * */
            int size=pageSize;
            
            for (int i = 0; i < strIndexList.size(); i++) {
                
                /**
                 * 到达截取的位置
                 * */
                if((i+1)==size) {
                    /** 截取 */
                    strList.add(strings.substring(index,strIndexList.get(i)));
                    
                    /** 记录下一次开始截取的下标 */
                    index=strIndexList.get(i)+1;
                    
                    /** 记录下一个位置 */
                    size=size+pageSize;
                    
                    /** 如果截取的位置已经超出*/
                    if(size>strIndexList.size()) {
                        strList.add(strings.substring(index,strings.length()));
                    }
                }
            }
        }
        return strList;
    }
    
    
    /**
     * 获取 指定字符串的下标
     * @param strings
     * @param str
     * @return
     */
    public static List<Integer> getIndex(String strings, String str){
        List<Integer> indexList=new ArrayList<>();
        
        int strIndex=0;
        
        while (strings.indexOf(str)!=-1){
            /**
             * 截取包含自身在内的前边部分
             * */
            String front= strings.substring(0,strings.indexOf(str)+str.length());
            
            /**
             * 记录长度位置
             * */
            strIndex=strIndex+front.length(); 
            
            /**
             * 添加到集合中
             * */
            indexList.add(strIndex-str.length());
            
            /**
             * 获取完成后,剔除
             * */
            strings=strings.substring(strings.indexOf(str)+str.length());
        }
        return indexList;
    }   
}

执行结果:

QQ截图20171223125630.png

相关文章

网友评论

      本文标题:java 根据字符串做分页

      本文链接:https://www.haomeiwen.com/subject/jszfgxtx.html