You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#类中存储大量字符串并支持随机选取(类似示例形式)

实用方案:实现可维护的随机字符串选取类

你说的上学时的写法,应该是Java里静态初始化数组/集合的简化形式,比如直接用大括号包裹字符串初始化。针对你觉得数组可读性差、内容多了难维护的问题,给你几个更友好的实现方式:

1. 静态初始化List(兼顾可读性与灵活性)

用List代替数组,初始化时每行一个字符串,增删改都一目了然,后期维护方便:

public class StringPool {
    // 直接初始化List,每行一个字符串,清晰直观
    private static final List<String> STRING_LIST = Arrays.asList(
        "第一个字符串",
        "第二个字符串",
        "第三个字符串",
        "需要新增就直接加一行,删的话删掉对应行就行"
    );

    // 获取随机字符串的方法
    public static String getRandomString() {
        Random random = new Random();
        int randomIndex = random.nextInt(STRING_LIST.size());
        return STRING_LIST.get(randomIndex);
    }
}

如果需要支持运行时动态增删字符串,把Arrays.asList()换成new ArrayList<>(Arrays.asList(...))即可。

2. 枚举类(固定常量场景首选)

如果这些字符串是业务固定的常量,用枚举类更规范,自带不可变性,可读性拉满:

public enum StringEnum {
    FIRST_STRING("第一个字符串"),
    SECOND_STRING("第二个字符串"),
    THIRD_STRING("第三个字符串");

    private final String value;

    StringEnum(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    // 随机获取枚举对应的字符串
    public static String getRandomString() {
        StringEnum[] allEnums = StringEnum.values();
        int randomIndex = new Random().nextInt(allEnums.length);
        return allEnums[randomIndex].getValue();
    }
}

要修改内容直接操作枚举项就行,完全不用操心集合的初始化问题。

3. 配置文件剥离(大量字符串场景)

如果后期字符串数量特别多,硬编码在类里太麻烦,直接把字符串放到配置文件里(比如strings.properties):

# 用逗号分隔所有字符串
string_collection=字符串1,字符串2,字符串3,更多字符串...

然后在类里读取配置并初始化:

public class StringPool {
    private static final List<String> STRING_LIST;

    static {
        Properties props = new Properties();
        try (InputStream inputStream = StringPool.class.getResourceAsStream("/strings.properties")) {
            props.load(inputStream);
            String stringStr = props.getProperty("string_collection");
            STRING_LIST = Arrays.asList(stringStr.split(","));
        } catch (IOException e) {
            throw new RuntimeException("加载字符串配置失败", e);
        }
    }

    public static String getRandomString() {
        return STRING_LIST.get(new Random().nextInt(STRING_LIST.size()));
    }
}

以后增删字符串只需要改配置文件,不用动代码,维护成本直线下降。

你回忆的上学时的写法,应该是最基础的静态数组初始化:

public class StringPool {
    private static final String[] STRINGS = {
        "string",
        "string",
        "string"
    };
}

只是数组的操作不如集合灵活,所以上面的几种方案更适合长期维护。

内容的提问来源于stack exchange,提问作者GWirtinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:08:32