首页 > 解决方案 > 制作浮点数的多维数组列表的副本

问题描述

今天在调试我的应用程序时,我发现我的<ArrayList<ArrayList<ArrayList<Float>>>.

我的目标是制作该 ArrayList 的完整副本,因为现在当我更改 ArrayList 副本中的某些内容时,它也会更改原始 ArrayList。

所以我有这样的东西

            var first = ArrayList<ArrayList<ArrayList<Float>>>()
            var second = ArrayList<ArrayList<Float>>()
            var third = ArrayList<Float>()

            for(j in allData) {
                first.add(j.clone() as ArrayList<ArrayList<Float>>)
                for(k in j)
                {
                    second.add(k.clone() as ArrayList<Float>)
                    for(l in k)
                    {
                        third.add(l.toFloat())
                    }
                }
            }
            normalizedAllData = first.clone() as ArrayList<ArrayList<ArrayList<Float>>>

normalizedAllData在哪里<ArrayList<ArrayList<ArrayList<Float>>>

我应该如何创建一个完整的副本,以便新的 ArrayList 不会指向原始的 ArrayList?

谢谢您的帮助

标签: androidkotlinarraylistmultidimensional-arraycopy

解决方案


您不需要复制,Floats因为它们是不可变的。

您可以使用嵌套map调用来创建列表的副本,并将结果包装在ArrayList构造函数中:

val normalizedAllData = ArrayList(allData.map { innerList ->
    ArrayList(innerList.map { ArrayList(it) })
})

推荐阅读