Android 多次按索引查找列表中的数据是一种不好的做法吗?
我喜欢下面的代码Android 多次按索引查找列表中的数据是一种不好的做法吗?,android,performance,kotlin,Android,Performance,Kotlin,我喜欢下面的代码 override fun onBindViewHolder(holder: ViewHolder, position: Int) { val view = holder.view view.apply { name.text = list[position].name age.text = list[position].age address1.text = list[position].address1
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val view = holder.view
view.apply {
name.text = list[position].name
age.text = list[position].age
address1.text = list[position].address1
address2.text = list[position].address2
zip_code.text = list[position].zip_code
}
}
它多次查找数据以获取每个属性,如名称、年龄、地址1
我想知道是否最好将数据分配给一个变量并使用它?像这样,
val view = holder.view
val data = list[position]
view.apply {
name.text = data.name
age.text = data.age
address1.text = data.address1
address2.text = data.address2
zip_code.text = data.zip_code
}
分配给新变量的成本是否更高
请告诉我哪一个更好,为什么更好?第二个可能更好,原因有两个:
第二种可能更好,原因有二:
这取决于
列表
实现。在arraylist
get(index)的情况下,复杂度为O(1),因此两者的性能相同。如果复杂度相同,那么第一个更好?因为即使在O(1)
复杂度下,它也会保存单个变量,因此多次访问元素会有更差的性能-除非编译器或proguard或运行时可以将其优化为仅一次访问。这取决于列表
实现。在arraylist
get(index)的情况下,复杂度为O(1),因此两者的性能相同。如果复杂度相同,那么第一个更好?因为即使在O(1)
复杂度下,它也会保存单个变量,因此多次访问元素会有更差的性能-除非编译器或proguard或运行时可以将其优化为仅一次访问。
val view = holder.view
view.apply { list[position].also { data ->
name.text = data.name
age.text = data.age
address1.text = data.address1
address2.text = data.address2
zip_code.text = data.zip_code
}}