自学内容网 自学内容网

Java生成四位纯数字并且确保唯一性

背景:

  给了我一个需求,由于某些问题原因,需要给属性和数据添加一个code字段,这是给我发的消息

这两个要求其实是同一个需求,就是在创建对象的时候塞入一个unique的code嘛,听起来很简单吧,但是实现起来其实还是有点意思的。

实现方法: 

我们用第一个需求举例解决方法吧

1、利用数据库自增属性(推荐)

这种方法最为推荐,这种方式最容易控制唯一性,并且可以保证生成的是4为纯数字

实现步骤: 

1.单独创建一张单表
CREATE TABLE unique_codes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    code VARCHAR(8) NOT NULL UNIQUE
);
2.在Java中定义出这个类

  定义出实体类pojo,mapper,service

这部分代码就不写了,我用的mybatisPlus,但是只要是能和数据库交互能够insert数据就行。

3.在service层写生成方法 

这样根据数据库id生成的code就可以保证四位数字且保证唯一了。



@Service
public class UniqueCodeService {

    @Autowired
    private UniqueCodeMapper uniqueCodeMapper;
    @Transactional
    public String generateUniqueCode() {
        UniqueCode uniqueCode = new UniqueCode();
        uniqueCode = uniqueCodeMapper.save(uniqueCode);
        
        String code = "SXBM" + String.format("%04d", uniqueCode.getId());
        uniqueCode.setCode(code);
        uniqueCodeMapper.save(uniqueCode);

        return code;
    }
}

2、使用set集合

思路:这个方法就是首先我们需要使用Java的Random类生成一个四位数的随机数,然后我们需要检查这个随机数是否已经存在于之前生成的随机数中,如果已经存在,则重新生成直到生成一个唯一的随机数

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class UniqueRandomNumberGenerator {
    
    private static final int MIN = 1000;  // 四位数的最小值
    private static final int MAX = 9999;  // 四位数的最大值
    
    private Set<Integer> generatedNumbers = new HashSet<>();
    private Random random = new Random();

    public int generateUniqueRandomNumber() {
        while (true) {
            int randomNumber = random.nextInt((MAX - MIN) + 1) + MIN;  // 生成1000到9999之间的随机数
            if (!generatedNumbers.contains(randomNumber)) {
                generatedNumbers.add(randomNumber);
                return randomNumber;
            }
        }
    }

    public static void main(String[] args) {
        UniqueRandomNumberGenerator generator = new UniqueRandomNumberGenerator();
        
        // 生成10个唯一的四位随机数
        for (int i = 0; i < 10; i++) {
            int uniqueRandomNumber = generator.generateUniqueRandomNumber();
            System.out.println("Generated Unique Random Number: " + uniqueRandomNumber);
        }
    }
}
代码解释
  1. 常量定义
    • MIN 和 MAX 分别定义了四位数的最小值和最大值。
  2. 成员变量
    • generatedNumbers:这是一个 Set,用于存储所有已经生成的四位随机数。
    • random:这是一个 Random 对象,用于生成随机数。
  3. generateUniqueRandomNumber 方法
    • 使用 while(true) 循环不断生成新的四位随机数,直到生成一个不在 generatedNumbers 集合中的随机数。
    • 使用 Set 的 contains 方法来检查随机数是否已经存在。
    • 如果生成的随机数是唯一的,则将其添加到 generatedNumbers 集合,并返回该随机数。
  4. main 方法
    • 创建 UniqueRandomNumberGenerator 对象。
    • 循环调用 generateUniqueRandomNumber 方法生成并打印10个唯一的四位随机数

原文地址:https://blog.csdn.net/qq_42807952/article/details/140354009

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!