• Java 生成永不重复的订单号


    package com.taiping.test;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Random;
    
    public class Test12 {
        
        
        /**
         * 生成永不重复的订单号
         * @param startLetter  订单号开头字符串
         * @param size  订单号中随机的大写字母个数
         * @return
         */
        public static String createOrderNo(String startLetter,int size){
            
            String orderNo = null;
            
            Date nowDate = new Date();
            
            Random random = new Random();
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
            
            //生成两位大写字母
            String keyArr = randomLetter(size);
        
            String fourRandom = random.nextInt(9999) + "";
            
            int randLength = fourRandom.length();
            
            //四位随机数,不足四位的补0
            if(fourRandom.length()<4){//不足四位的随机数补充0
                for(int i=1; i<=4-randLength; i++){
                    fourRandom = '0' + fourRandom;
                }
            }
            
            orderNo="NS"+keyArr+sdf.format(nowDate)+fourRandom;
            
            return orderNo;
        }
        
        /**
         * 生成大写字母
         * @param size
         * @return
         */
        public static String randomLetter(int size){
            String keyArr= "";
            char key = 0;
            boolean[] flag=new boolean[26];    //定义一个Boolean型数组,用来除去重复值
            for(int i=0;i<size;i++){     //通过循环为数组赋值
                Random rand=new Random();
                int index;
                do{
                    index=rand.nextInt(26);    //随机生成0-25的数字并赋值给index
                }while(flag[index]);    //判断flag值是否为true,如果为true则重新为index赋值
                key=(char) (index+65);        //大写字母的ASCII值为65-90,所以给index的值加上65,使其符合大写字母的ASCII值区间
                flag[index]=true;       //让对应的flag值为true
                
                keyArr +=key;
            }
            return keyArr;
        }
        
        /**
         * 测试
         * @param args
         */
        public static void main(String[] args) {
            
            System.out.println(createOrderNo("ND",2));
            
    //        NSBP202102041552086341
        }
    }
    作者:小鱼
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    2、requests练习
    1、接口基础
    9、异常和文件
    宝马5系图片分类下载自动创建文件夹并保存
    opencv操作视频python
    利用协程框架,无界面浏览器爬取上海高院开庭数据
    协程框架
    多线程抓取邮箱
    selenium操作下拉选和网页提示框
    selenium相关导入By、Keys、WebDriverWait、ActionChains,显示等待与隐式等待
  • 原文地址:https://www.cnblogs.com/sinosoft/p/14373070.html
Copyright © 2020-2023  润新知