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

实现算法如下:

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]

在号码池取连续号码的算法相关推荐

  1. 公共号码池redis实现方案

    概述 在企业级呼叫模型中,号码资源总是有限的,企业员工在使用有限的号码资源外呼时,就会有号码冲突的问题,如何解决多人共用少量号码的选号问题? 最近有一个新的业务需求,需要解决公共号码池的选号问题,号码 ...

  2. 用 java实现双色球号码生成系统;(在装满33个红色球池中连续抽取6个红球; 在一个装满16颗球的蓝色球池中抽取1个蓝球。)

    用实际抓球实现(模仿现实变量) public class TestLottery1 {/*双色球号码生成算法一:模仿现实情况,在一个装满33个球的球池中连续抽取6个红球:在一个装满16颗球的球池中抽取 ...

  3. 非常实用的,使用SQL查询连续号码段。(做计费系统或SP的兄弟经常会用到)...

    非常实用的,使用SQL查询连续号码段.(做计费系统或SP的兄弟经常会用到) 数据库中如何使用SQL查询连续号码段 在[Database吧]上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问 ...

  4. Python:实现测试信用卡号码有效性credit card validator的算法(附完整源码)

    Python:实现测试信用卡号码有效性credit card validator的算法 def validate_initial_digits(credit_card_number: str) -&g ...

  5. mysql 查询多个号段_SQL查询连续号码段实现实例

    下文将教您在数据库中如何使用SQL查询连续号码段的方法,供您参考,如果您对SQL查询方面感兴趣的话,不妨一看,对您会有所帮助. 有一个表结构, fphm,kshm 2014,00000001 2014 ...

  6. 如何用PS快速的批量制作连续号码数字编号图解

    如何用PS快速的批量制作连续号码数字编号图解 大家好,今天太原博飞设计培训小编就告诉大家如用PS快速的制作连续数字编号,在工作中尤其是大型活动的有时候制作连续的号码牌,少还好,如果上百上千个,那就辛苦 ...

  7. oracle号码段拆开,学习-SQL查询连续号码段的巧妙解法

    学习-SQL查询连续号码段的巧妙解法 在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问题是这样的:我有一个表结构, fphm,kshm 2014,00000001 2014, ...

  8. 编程练习:福利彩票中心,实现随机生成双色球号码,实现下注号码对比。 基础知识:1.数组 2.循环逻辑

    基础知识:1.数组 2.循环逻辑 实现随机生成双色球号码: [ 04 12 30 08 15 26 ] [ 11 ] 思路: 蓝球池 { "01","02",& ...

  9. 计算机树表查找算法的适用场景,利用基于R-树连续最近邻查询算法来渲染雨滴,形成了逼真的下雨天场景图...

    摘要:自动驾驶领域最近的发展表明,这些车辆在不久的将来会出现在每个城市的街道上,而这些城市不会容忍交通事故的发生.为了保证安全需求,自动驾驶汽车和被使用的软件必须在尽可能多的条件下进行详尽的测试.通常 ...

最新文章

  1. firebase 发生消息_如何在命令行提示符下显示当前的Firebase项目名称,以防止发生危险错误...
  2. python编程基础是什么-编程学习第一步,让你20天搞定Python编程
  3. c2064 项不会计算为接受0个参数的函数_getMask()讨论:Abaqus Part对象的成员变量常用函数...
  4. python发送短信接口_python发送短信和发送邮件
  5. MySQL加索引语句不加锁:ALGORITHM=INPLACE, LOCK=NONE
  6. ehcache 默认大小_简单的使用ehcache
  7. python标准库模块教程_Python标准库之Sys模块使用详解
  8. mysql开启远程访问权限
  9. enjoyable parameter in pgbouncer
  10. 粒子群算法优化BP和Elman神经网络-matlab源码
  11. 用户编写的python程序、无需修改就可以_超星泛雅大学英语A(Ⅳ答案
  12. 单片机设计 指纹识别系统
  13. ios百度地图开发之路径规划
  14. 解决 撤销键 Ctrl+Z 不能撤销的问题
  15. LaTex排版一二三
  16. 二进制枚举子集(总结+应用)
  17. 探秘Google苏黎世办公室:放肆的享乐主义
  18. xshell5之ssh隧道连接
  19. php判断caj文件页数,2个免费CAJ转PDF的方法,而且不限页数和大小
  20. ubuntu装机比做_与众不同总比做品牌设计案例研究更好

热门文章

  1. pycharm玄学记录
  2. 计算机故障报警声2声,电脑发出一长两短报警声的原因分析及解决办法
  3. STM32学习--中断
  4. Jenkins 自动化部署 持续集成
  5. 图片如何批量重命名?其实重命名很简单
  6. Java开发设计模式
  7. 【心路历程】微职位报名华为HCNP认证,妥妥过。。。(嗯,最后有彩蛋)
  8. 10行代码教你用Python扫描Excel表格,自动生成条形码!
  9. ctwing电信AEP平台对接涂鸦智能云平台python程序源码
  10. Python中使用Tkinter 快速布局编写桌面GUI程序