ケルビンHerwanda Tandrio:
私は、属性すぎのArrayListを持っているデータのArrayListを作るために問題を抱えています。モデルデータは、このコードのように見えます。
data class DataArrayInArray02(
val no: Int? = null,
val dataArray: ArrayList<Int>
)
私は、データを取得したいDataArrayInArray02このように。
これは私のコードです
fun main() {
val dataArrayInArray = ArrayList<DataArrayInArray02>()
val dataChildrenArray = ArrayList<Int>()
for (i in 0..3) {
val data = (0..10).random()
for (j in 0..data) {
val d = (1..1000).random()
dataChildrenArray.add(d)
}
dataArrayInArray.add(DataArrayInArray02(i+1, dataChildrenArray))
println("ID : ${dataArrayInArray[i].no}, Data : ${dataArrayInArray[i].dataArray}")
dataChildrenArray.clear()
}
}
私はこのコードを実行すると、私は上の写真のような結果が得られます。
私は呼んでdataArrayInArrayを次のようになります「を」ルーピング使用します。
for (j in 0 until dataArrayInArray.size) {
println("ID : ${dataArrayInArray[j].no}, Data : ${dataArrayInArray[j].dataArray}")
}
しかし、私はこのような結果を得ます。
だから、どのコードが正しくありませんか?それがために使用するのであるdataChildrenArray.clearを() ?私は、そのコードを削除した場合。結果は次のようになります:
ID : 1, Data : [915, 565, 591, 254, 67]
ID : 2, Data : [915, 565, 591, 254, 67, 258, 57, 767, 866, 986, 558, 187, 976]
ここで、ID 2は、データ[258、57、767、866、986、558、187、976]を表示すべきです。
どのようにその問題を解決するには?
Tenfour04:
あなたは、同じインスタンスを渡しているArrayList<Int>
の各インスタンスにDataArrayInArray02
、トップレベルのリストに。あなたのコードを修正するには、線を移動
val dataChildrenArray = ArrayList<Int>()
あなたの内側for
ループので、新しいものは、それぞれの子のために作成されます。
あなたの代わりに、ArrayListの一覧を使用しているとOKした場合は、これを簡略化することができます:
val dataArrayInArray = (1..4).map { i ->
val innerListSize = (0..10).random()
val innerList = (0..innerListSize).map { (1..1000).random() }
DataArrayInArray02(i, innerList)
}