`

一个简易的生成流水号的类

 
阅读更多
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
/**
 * 
 * @author ABC
 *
 */
public class SerialNumber {
     
    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, SerialNumber> map = new HashMap<String, SerialNumber>();
     
    private SerialNumber(String prefix,Date date){
        this.prefix = prefix;
        this.date = date;
    }
     
    public static SerialNumber newInstance(String prefix){
        Date date = new Date();
        return newInstance(prefix,date);
    } 
     
    public static SerialNumber newInstance(String prefix,Date date){
        SerialNumber 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 SerialNumber(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;
    }
}
 
分享到:
评论

相关推荐

    简易矢量图形生成系统.zip

    简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量...

    简易SiteMap生成器

    本软件是简易的SiteMap生成器,可遍历网站收集网址,生成(全站)用于搜索引擎的SiteMap文件。 软件不会对URL进行校验,所以可能会有错误网址,请生成后自行删除。 ...提示:如果网址数量较多,生成过程将会非常缓慢,请...

    一个简易的数组类

    我制作的一个简易的数组类,用于替代c/c++中的"问题"数组,除传统的数组功能外,它还提供了以下功能: 1.由元素个数构造数组. 2.由同类数组构造一个新数组. 3.可重新设置数组大小,是否保持数组原来的值可由用户...

    简易矢量图形生成系统

    用Qt写的简易矢量图形生成系统;代码不是最终版,自己优化去!

    Python-一个简易密码生成器Asimplepassworddictionarygenerator

    一个简易密码生成器 A simple password dictionary generator

    ASCET代码生成简易说明.pdf

    ASCET代码生成简易说明.pdf

    简易代码生成器

    用于生成通用的web项目,如Service,web,Dao 方便快捷,简单灵活。

    一个生成公章图片的简易工具

    一个生成公章图片的简易工具 vc

    Model层代码简易生成器 带源码

    简易的一个MODEL类的生成器。生成的格式也是一般格式,文件生成后是TXT的,类型不是很准确,但是很小巧!

    Java简易随机数生成

    Java简易随机数生成 下载完请输入测试代码 public static void main(String[] args) { System.out.println(random(50,100));//example System.out.println(random(50.0,100.0)); }

    Delphi简易二维码生成器

    使用Delphi 7开发的简易二维码生成器,支持中文。代码没有使用第三方控件和第三方DLL。

    一个简易的链表类

    一个简易的链表类,可以实现一些基本的链表操作,同时使用了C++的模板原理,可以对不同的数据结构进行链表存储

    VB简易二维码生成器

    VB简易二维码生成器

    asp.net实体类生成器

    这个东西是我在无聊时做的一个简易的实体类生成工具,用c#开发,能够简单的生成实体类,需要说明的是 本工具生成的文件在D://CS/文件夹下

    简易流水灯

    简易流水灯

    基于C#制作的简易代码生成器.zip

    吸收市面上的代码生成插件如 EF 、MyBatis Generator、MyBatis Plus 等框架经验,希望手动使用 WinForm 实现一款简易的代码生成器。主要功能是通过读取用户设定的数据库中的数据表,由用户选定其中的若干个数据表,...

    matlab 简易格柄生成器(jk裙)

    matlab 简易格柄生成器(jk裙),可生成自带纹理的格柄图像,保存格式为png类型,仅供学习娱乐使用

Global site tag (gtag.js) - Google Analytics