如何在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
相关产品推荐
相关产品推荐

