• 在号码池取连续号码的算法


    最近项目中需要提供一个选号接口,在一批号码中检索出一批连续的号码供选则。

    实现算法如下:

    import java.util.*;

    public class SerialNum {

     /**
      * 在号码列表中检索出一批连续的号码
      * @param inNum 号码列表
      * @param serialCount 连续的号码个数
      * @return 符合条件的连续的号码
      */
     public List getSerialNum(List inNum,int serialCount)
     {
      int retListCount=inNum.size();//符合条件号码总数
      int serCount=serialCount;     //连续号码数
      List seriesNumList=new ArrayList();//连续的号码列表
      long preNum=0;  //前一个号码
      int serIndex=0; //号段前索引
      int serToIndex=0;//号码段后索引
      /*取一段连续的号码*/
      while(serIndex+serCount<=retListCount)
      {
       serToIndex=serIndex+serCount;
                /*取一段号码*/
       seriesNumList=getSubList(inNum,serIndex,serToIndex);
       for(int i=0;i<serCount;i++)
       {
        long curNum=Long.parseLong(seriesNumList.get(i).toString());//当前号码
        if(i!=0)
        {
         if(curNum-preNum!=1)
         {
          serIndex+=i;
          seriesNumList.clear();
          break;
         }
        }
        preNum=curNum;
        if(i==serCount-1)
        {
         return seriesNumList;
        }
       }

      }
      return seriesNumList;
     }
     /**
      * 从一个列表中取一段列表
      * @param inList 列表
      * @param fromIndex 起始索引
      * @param toIndex 终止索引
      * @return 在列表中起始索引至终止索引的一段列表
      */
     public List getSubList(List inList,int fromIndex,int toIndex)
     {
      List subList=new ArrayList();
      int size=inList.size();
      if(toIndex<=size&&(toIndex-fromIndex)<=size)
      {
          for(int i=fromIndex;i<toIndex;i++)
          {
           subList.add(inList.get(i));
          }
      }
      return subList;
     }
     /**
      * @param args
      */
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      List inNumList=new ArrayList();
      inNumList.add("4560000");
      inNumList.add("4560002");
      inNumList.add("4560004");
      inNumList.add("4560005");
      inNumList.add("4560006");
      inNumList.add("4560007");
      inNumList.add("4560008");
      inNumList.add("4560009");
      inNumList.add("4560010");
      inNumList.add("4560012");
      inNumList.add("4560013");
      inNumList.add("4560014");
      inNumList.add("4560015");
      inNumList.add("4560016");
      inNumList.add("4560017");
      inNumList.add("4560018");
      inNumList.add("4560019");
      inNumList.add("4560020");
      inNumList.add("4560200");
      inNumList.add("4560300");
      inNumList.add("4560301");
      inNumList.add("4560302");
      inNumList.add("4560303");
      inNumList.add("4560304");
      inNumList.add("4560305");
      inNumList.add("4560306");
      inNumList.add("4560307");
      inNumList.add("4560308");
      inNumList.add("4560309");
      inNumList.add("4560310");
      inNumList.add("4560311");
      inNumList.add("4560312");
      inNumList.add("4560313");
      inNumList.add("4560314");
      inNumList.add("4560315");
      inNumList.add("4560316");
      inNumList.add("4560317");

      SerialNum serialNum=new SerialNum();
      List serialList=serialNum.getSerialNum(inNumList,7);
      System.out.print(serialList);

     }
    }

    运行结果:
    [4560004, 4560005, 4560006, 4560007, 4560008, 4560009, 4560010]

  • 相关阅读:
    前端总结(设计向)
    bootstrap 样式规范总结
    angular2学习---模板学习
    angular2学习 -- 基本配置学习
    前端相关小技巧以及问题总结
    认识hasLayout——IE浏览器css bug的一大罪恶根源 转
    bug 由于浏览器缓存而引起的ajax请求并没有获取到服务器最新数据从而导致的bug
    总结 好用的工具/网站/插件
    .NET FrameWork完全卸载
    ASP.NET4.0项目部署到Win7系统的IIS上
  • 原文地址:https://www.cnblogs.com/xiejava/p/15171492.html
Copyright © 2020-2023  润新知