首页 > 代码库 > 自定义流水号。

自定义流水号。

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=http://www.mamicode.com/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());                    }}

 

自定义流水号。