代码之家  ›  专栏  ›  技术社区  ›  Mr the cat

ArrayList获取另一个ArrayList的值

  •  0
  • Mr the cat  · 技术社区  · 2 年前

    我有个问题 ArrayList 1.我有两个 ArrayList 他们是依赖的。

    class MainActivity : AppCompatActivity() {
    
        var arrayList1 = arrayListOf<String>()
        var arrayList2 = arrayListOf<String>()
        lateinit var binding: ActivityMainBinding
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            binding = ActivityMainBinding.inflate(layoutInflater)
            setContentView(binding.root)
            clickOnButton()
            arrayList1 = arrayListOf<String>("a", "b", "c")
            arrayList2 = arrayList1
            arrayList2.clear()
            println("ARRAYLIST: $arrayList1") //return me empty []
        }
    

    我想保持价值观 arrayList1 .我怎么能做到?

    2 回复  |  直到 2 年前
        1
  •  1
  •   Mustafa Dakhel    2 年前

    可以使用旧的数组列表元素创建新的数组列表,如下所示:

    arrayList1 = arrayListOf<String>("a", "b", "c")
    arrayList2 = arrayListOf(arrayList1)
    arrayList2.clear()
    println("ARRAYLIST: $arrayList1") // will print [a, b, c]
    
        2
  •  0
  •   konstantin durant    2 年前

    您可以使用以下功能:

    fun cloned(arrayList: ArrayList<Any>): ArrayList<Any> {
    return arrayList.map {
    when (it) {
      is ArrayList<*> -> cloned(it.toList() as ArrayList<Any>)
      else            -> it
          }
       } as ArrayList<Any>
    }
    

    这是为了深度克隆,但会奏效。但您可以使用普通for循环:

    for (i in arrayList1) {
        arrayList2.add(i)
    }