Java talend中用于生成id的字母数字计数器

Java talend中用于生成id的字母数字计数器,java,talend,talend-mdm,Java,Talend,Talend Mdm,我试图在talend中找到一种生成字母数字计数器的方法,该计数器以以下方式创建数字:YYXXXXXXXX 在哪里 YY是日历年 XXXXXXXX是字母数字计数器的id(每年从序列号00000001到zzzzzz) 每到新年,8个字符的ID应该被重置,并以00000001重新开始 序列应该看起来像 00000001 00000002 00000003 ... 99999999 A0000001 A0000002 A0000003 ... A9999999 B0000001 B0000002

我试图在talend中找到一种生成字母数字计数器的方法,该计数器以以下方式创建数字:YYXXXXXXXX

在哪里

  • YY是日历年
  • XXXXXXXX是字母数字计数器的id(每年从序列号00000001到zzzzzz)
每到新年,8个字符的ID应该被重置,并以00000001重新开始

序列应该看起来像

00000001
00000002
00000003
...
99999999

A0000001
A0000002
A0000003
...
A9999999

B0000001
B0000002
B0000003
...
B9999999

Z0000001
Z0000002
Z0000003
...
Z9999999
...

ZA000001
ZA000002
ZA000003
...
ZA999999

......
ZZZZZZZZ
最后一个数字应该是zzzz。首先是1-9,然后是A-Z

一年内我们能容纳的最后一个id是20zzzz


如何做到这一点?

基本上,它将一个数字(长)转换为基数为36的基数,用前面的零填充它以匹配格式,将当前年份的最后两位数合并,并将结果作为字符串返回

import java.time.LocalDateTime//用于从系统时钟获取当前年份
公共静态字符串codegen(长输入){
字符串LastTwoDigitOfYear=Integer.toString(LocalDateTime.now().getYear()).substring(2);//the“YY”
String radixOf36Base=Long.toString(输入,36).toUpperCase();
String radixOf36BasePadded=String.format(“%8s”,radixOf36Base)。替换(“”,'0');//替换“XXXXXXXX”
返回LastTwoDigitOfYear+RadixOf36基填充;//YYXXXXXXXX
}

大家好,欢迎来到stackoverflow。到目前为止你试过什么?你被什么卡住了?Stackoverflow不是“家庭作业/为我编写代码”服务。如果你事先表现出自己付出了一些努力,你就更有可能得到别人的帮助。这种描述看起来像一个基本的36位数系统。您所要做的就是生成一个接受int并以36为基数返回的函数。那么这只是一个连接年份的问题。你能不能举一个例子来说明内存不足的异常。有人能帮我写代码吗