属性があまりにArrayListのを持っているのArrayListを作成します

ケルビンHerwanda Tandrio:

私は、属性すぎのArrayListを持っているデータのArrayListを作るために問題を抱えています。モデルデータは、このコードのように見えます。

data class DataArrayInArray02(
    val no: Int? = null,
    val dataArray: ArrayList<Int>
)

私は、データを取得したいDataArrayInArray02このように。結果1:データ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}")
    }

しかし、私はこのような結果を得ます。

2結果:属性のために空のデータを取得する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)
    }

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=399834&siteId=1