首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 生成 6 位字母數字混合隨機字串完整實作

     編輯:Java 相關知識

需求與核心邏輯

產生指定長度(預設 6 位)的隨機字串,字符池包含大小寫英文字母與數字 0-9,並去重確保唯一性。

完整可執行代碼

package com.amos.tools;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class InvertCodeGenerator {
    public static void main(String[] args) {
        List<String> results = genCodes(6, 100);
        System.out.println("生成數量:" + results.size());
        results.forEach(System.out::println);
    }

    public static List<String> genCodes(int length, long num) {
        List<String> results = new ArrayList<>();
        Random random = new Random(); // 提升至外層,避免重複建立
        for (int j = 0; j < num; j++) {
            StringBuilder val = new StringBuilder();
            for (int i = 0; i < length; i++) {
                boolean isChar = random.nextBoolean(); // true=字母, false=數字
                if (isChar) {
                    boolean upper = random.nextBoolean();
                    int base = upper ? 65 : 97; // 'A'=65, 'a'=97
                    val.append((char) (base + random.nextInt(26)));
                } else {
                    val.append(random.nextInt(10));
                }
            }
            String code = val.toString().toLowerCase(); // 統一小寫
            if (!results.contains(code)) results.add(code); // 去重
        }
        return results;
    }
}

優化重點說明

  • 使用 StringBuilder 替代字串拼接,效能大幅提升。
  • Random 實例提至迴圈外,避免種子重複導致隨機性下降。
  • nextBoolean() 簡化 0/1 判斷邏輯。
  • 去重採用 List.contains(),量大時建議改用 HashSet 存儲中間結果。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved