ArrayList получает значение другого ArrayList

У меня проблема с ArrayList. У меня 2 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. Как я могу это сделать?

Вы должны сделать arrayList2 = ArrayList(arrayList1)

Nongthonbam Tonthoi 07.05.2022 11:57
0
1
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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)
}
Ответ принят как подходящий

Вы можете создать новый список массивов со старыми элементами списка массивов следующим образом:

arrayList1 = arrayListOf<String>("a", "b", "c")
arrayList2 = arrayListOf(arrayList1)
arrayList2.clear()
println("ARRAYLIST: $arrayList1") // will print [a, b, c]

Другие вопросы по теме