備忘録代わりのTipsです。
やりたいこと
data class Student(
var id: Int,
var name: String,
var age: Int,
)
var studentList: MutableList<Student> = mutableListOf()
for (i in 1..10) {
studentList.add(
Student(
id = i,
name = "hoge",
age = 18,
)
)
}
こんな雑なdata classの配列があったとして、指定したidのStudentをremoveしたい。
やり方
findを使う
fun removeStudent(id: Int) {
studentList.find { it.id == id }?.run {
studentList -= this
}
}
書いていて思いましたが、よくあるequalsメソッドのoverrideみたいな感じですね。
containsでは中身の一致を確認してくれないので自作するやつです。
removeIfを使う
removeIfを使うとよりシンプルに書けて見やすいコードになります。
fun removeStudent(id: Int) {
studentList.removeIf {
it.id == id
}
}
※@n_takehataさんよりコメントいただきました。ありがとうございます。
removeAllを使う
removeIfはJava1.8から追加されたため、それ以前のJVMや非JVMをターゲットとするときには使用できません。
その場合にはremoveAllを使うことができます。
fun removeStudent(id: Int) {
studentList.removeAll {
it.id == id
}
}
※@sdkeiさんよりコメントいただきました。ありがとうございます。
動かしてみよう
Kotlin Playgroundにコードを書いておきましたので、気になる方は実際に動かしてみてください。
https://pl.kotl.in/zKrwYCiA7