zoukankan      html  css  js  c++  java
  • 自定义流水号。

    import java.text.Format;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
     
    /**
     * 
     * @author Phonnie
     *
     */
    public class StreamId {
         
        private static final int MAX_VALUE=9999;
        private static final String FORMAT = "yyMMdd";
        private static final Format DF= new SimpleDateFormat(FORMAT);
        private static final byte[] lock = new byte[0];
        private String prefix = null;
        private Date date = null;
        private int number=1;
        private static Map<String, StreamId> map = new HashMap<String, StreamId>();
         
        private StreamId(String prefix,Date date){
            this.prefix = prefix;
            this.date = date;
        }
         
        public static StreamId newInstance(String prefix){
            Date date = new Date();
            return newInstance(prefix,date);
        } 
         
        public static StreamId newInstance(String prefix,Date date){
            StreamId o = null;
            synchronized (lock) {
                String key = getKey(prefix, date);
                if(map.containsKey(key)){
                    o = map.get(key);
                    int number = o.getNumber();
                    if(number<MAX_VALUE){
                        o.setNumber(number+1);
                    }else {
                        o.setNumber(1);
                    }
                     
                } else {
                     o = new StreamId(prefix,date);
                     map.put(key, o);
                }
            }
            return o;
        }
         
         
         
        private static String getKey(String prefix,Date date){
            return prefix+format(date);
        }
     
        private static String format(Date date){
            return DF.format(date);
        }
         
        public String toString(){
            return  prefix+ format(date) + String.format("%04d", number);
        }
     
        public void setNumber(int number) {
            this.number = number;
        }
     
        public int getNumber() {
            return number;
        }
        
        public static void main(String[] args){
            StreamId sid=newInstance("AA") ;
            System.out.println("StreamId.main().sid="+sid.toString());
            StreamId sida=newInstance("AA") ;
            System.out.println("StreamId.main().sid="+sida.toString());
            
            
        }
    }
  • 相关阅读:
    面试笔记之手写单例模式
    Java学习笔记六:Java最基础
    Mac下终端工具iTerm2的快捷键
    Typescript引用类型--字符串
    Typescript引用类型--数组
    Typescript函数作用域
    Typescript的函数定义方式
    初识Typescript以及Typescript的安装
    VS Code前端开发常用插件和常用快捷键
    Vue CLI3项目构建
  • 原文地址:https://www.cnblogs.com/harry335/p/3957807.html
Copyright © 2011-2022 走看看