Kotlin开发中如何不创建完整字母表列表获取随机英文字母
优化实现方案
首先梳理原代码的可优化点:
- 每次调用都会生成完整的26字母列表,存在不必要的内存开销
- 每次实例化新的
Random对象,既浪费性能,也会影响随机数的随机性 - 函数声明未指定返回值,实际运行会报错(无返回值声明的Kotlin函数默认返回Unit,无法接收Char类型返回结果)
你要求的「不创建完整字母表列表、不获取列表随机索引」的需求可以通过直接操作字符ASCII码实现,完全不需要生成列表:
import kotlin.random.Random fun getRandomChar(): Char { // 直接生成0~25的随机数,加上小写a的ASCII码后转Char即可 return (Random.nextInt(26) + 'a'.code).toChar() }
如果追求代码可读性,也可以用Kotlin标准库的CharRange实现,('a'..'z')是轻量的区间对象,仅存储首尾值不会生成全量字母列表:
import kotlin.random.Random fun getRandomChar(): Char { return ('a'..'z').random() }
两种方案的性能都远高于原实现,前者性能开销更低,后者可读性更好,你可以根据场景选择。
内容的提问来源于stack exchange,提问作者Omar Khaled
相关产品推荐
相关产品推荐

