是的,我理解有误。以下是一种生成不重复的方案,保持跟TASK_ID_PREFIX结构长度一致:
private static final String TASK_ID_PREFIX = "U00000000430138013002023032809110096f5bb04e024";
Set taskIdSet = new HashSet<>();
String taskId;
while(taskIdSet.size() < 1000000){
StringBuilder sb = new StringBuilder(TASK_ID_PREFIX);
for(int i=0; i<24; i++){
if(i == 21){ // 跳过原序列号位置
continue;
}
int randomNum = (int)(Math.random() * 16);
char hexChar = Character.forDigit(randomNum, 16);
sb.setCharAt(i, hexChar);
}
taskId = sb.toString();
taskIdSet.add(taskId);
// do something with taskId
}