2017-11-16 3 views
0
私はコードの下のように持って

リスト内のデータをインデックスで複数回検索するのは悪い習慣ですか?

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 
} 

新しい変数に割り当てるのはよりコストがかかりますか?

私には、より良い理由とその理由を教えてください。

+0

これらの重複を減らすために、より読みやすく、また、より少ないエラーが発生しやすいですst。 'arraylist'の場合、(インデックス)複雑さはO(1)ですので、両方とも同じ性能を持ちます。 – Saurabh

+0

同じ複雑さの場合は、最初の方が良いでしょうか?コンパイラやproguardやランタイムがそれを1つのアクセスだけに最適化しない限り、複数の要素に何度もアクセスすると、性能が悪くなります。 –

+0

'O(1)'の複雑さでさえ、 – zsmb13

答えて

2

第二は、おそらくより良い2つの理由によるものです:あなたは一度だけ(access costs depending on the actual implementation)を指定したインデックス位置に複数回リストにアクセスする必要がありますが、いない

  1. それははるかです李 `に依存する

0
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 
}} 
関連する問題