Kotlinでは、可変長のリストを作成するために、ArrayListとmutableListOfという2つのクラスが用意されています。どちらもリストの要素を追加や削除したり、インデックスでアクセスしたりすることができますが、内部的な実装や機能に違いがあります。この記事では、それぞれの特徴や使い方について解説します。
ArrayList
ArrayListはJavaのjava.util.ArrayListクラスを継承したクラスです。そのため、Javaとの相互運用性が高く、Javaのメソッドやライブラリを呼び出す際に便利です。また、コンストラクタで初期容量を指定できるため、メモリ効率が高いです。しかし、要素の型を明示的に指定しなければならないため、コードが冗長になる可能性があります。
使い方
ArrayListを使うには、以下のように書きます。
// ArrayListを宣言
val list = ArrayList<Int>() // 要素の型を指定
// 要素を追加
list.add(1)
list.add(2)
list.add(3)
// 要素を削除
list.remove(2)
// 要素にアクセス
println(list[0]) // 1
println(list[1]) // 3
mutableListOf
mutableListOfはKotlinのkotlin.collections.MutableListインターフェースを実装したクラスです。そのため、Kotlin独自の機能を利用できます。また、型推論によって要素の型を指定できるため、コードが簡潔になります。しかし、初期容量を指定できないため、メモリ効率が低い可能性があります。また、Javaとの相互運用性が低く、ボクシングやアンボクシングが必要になる場合があります。
使い方
mutableListOfを使うには、以下のように書きます。
// mutableListOfを宣言
val list = mutableListOf(1, 2, 3) // 要素の型を推論
// 要素を追加
list.add(4)
list.add(5)
list.add(6)
// 要素を削除
list.remove(4)
// 要素にアクセス
println(list[0]) // 1
println(list[1]) // 2
まとめ
Kotlinでは、ArrayListとmutableListOfという2つのクラスで可変長のリストを作成できます。どちらも利点と欠点がありますので、問題や目的に応じて選択する必要があります。ArrayListはメモリ効率やJavaとの相互運用性が高いですが、コードが冗長になる可能性があります。mutableListOfはコードが簡潔でKotlin独自の機能を利用できますが、メモリ効率やJavaとの相互運用性が低い可能性があります。
参考文献
OpenAI. (2023). BingAI (2023年4月5日版) [Large language model]. https://www.bing.com/ai