Kotlin:如何存储与查询文件读取的R、T配对数组
如何在Kotlin中存储半径(R)与扭转角(T)配对数据并查询指定组
我来帮你搞定这个问题!在Kotlin里要存储这种配对数据并方便查询,最清晰的方式是用数据类+列表的组合,既直观又好用,具体步骤如下:
1. 定义数据类封装配对数据
首先创建一个数据类,专门用来承载每组的半径和扭转角,这样每组数据都是语义明确的独立对象:
data class RadiusTwist(val radius: Float, val twist: Float)
Kotlin的数据类会自动帮我们生成equals、toString等实用方法,完全不用手动编写。
2. 初始化列表并填充数据
接下来创建一个可变列表,在循环解析文件内容时,把每组解析好的R和T封装成数据类对象,添加到列表中:
// 初始化可变列表,用来存储所有R-T配对 val rtPairs = mutableListOf<RadiusTwist>() for (nsection in 1 until NS + 1) { val list: List<String> = lines[nsection + 1].trim().split("\\s+".toRegex()) val radius = list[0].toFloat() val twist = list[8].toFloat() // 将当前组的R、T封装成对象,加入列表 rtPairs.add(RadiusTwist(radius, twist)) }
循环结束后,rtPairs就按顺序存好了所有最多50组的配对数据。
3. 查询指定组的数据
因为Kotlin的列表是0索引的,所以要查询第N组数据,需要用索引N-1来获取:
比如查询第25组的示例代码:
// 获取第25组数据(注意索引是24) val targetPair = rtPairs[24] println("第25组的半径:${targetPair.radius}") println("第25组的扭转角:${targetPair.twist}")
如果需要在其他函数中使用这个列表,你可以把rtPairs作为参数传递给函数,或者将其定义为类的成员变量(根据你的代码结构选择即可)。
另外,为了避免索引越界的问题,建议添加简单的范围判断:
val targetIndex = 24 if (targetIndex in rtPairs.indices) { val targetPair = rtPairs[targetIndex] // 处理目标组数据 } else { println("指定的组号超出现有数据范围啦!") }
内容的提问来源于stack exchange,提问作者David Pesetsky
相关产品推荐
相关产品推荐

