Kotlin中将Enumeration<String>转换为Array<String>的最佳方法
Kotlin中Enumeration转Array的最佳实现
最符合Kotlin编码规范、代码最简洁的实现方式是利用标准库扩展函数链式调用:
// 替换成你持有的Enumeration对象即可 val strArray: Array<String> = sourceEnumeration.toList().toTypedArray()
实现逻辑说明
- 第一步调用
Enumeration的toList()扩展方法,内部会自动遍历枚举的所有元素,生成不可变的List<String>实例,逻辑经过标准库校验,不会出现元素遗漏、遍历越界问题 - 第二步调用List的
toTypedArray()扩展方法,直接生成对应类型的Array<String>,不需要手动指定数组长度、逐个填充元素
其他可选方案说明
如果你的枚举元素量级极大,希望减少中间对象开销,也可以手动遍历枚举填充ArrayList后转数组:
val tempList = ArrayList<String>() while (sourceEnumeration.hasMoreElements()) { tempList.add(sourceEnumeration.nextElement()) } val strArray = tempList.toTypedArray()
注意:这个写法的逻辑和标准库
toList()的内部实现基本一致,日常开发直接用链式调用写法即可,代码可读性更高,不需要重复实现通用逻辑。
不要尝试直接初始化固定长度的数组再遍历赋值,因为Enumeration没有提前暴露元素总个数的API,强行写需要先遍历一次计数、再遍历一次赋值,性能反而更差。
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

