как удалить элемент из списка массивов в kotlin - PullRequest
1 голос
/ 13 апреля 2020
data class RideDate(var enddate: String? = null,var startdate: String? = null) 



 fun main(args: Array<String>) {
var listOfRideDate = mutableListOf<RideDate>();
val date1 = RideDate()
date1.startdate = "2018-11-05 00:00:00 +0000"
date1.enddate = "2018-11-06 23:59:59 +0000"
listOfRideDate.add(date1)

val date2 = RideDate()
date2.startdate = "2020-01-20 00:00:00 +0000"
date2.enddate = "2020-02-20 00:00:00 +0000"
listOfRideDate.add(date2)

val date3 = RideDate()
date3.startdate = "2020-03-20 00:00:00 +0000"
date3.enddate = "2020-03-20 00:00:00 +0000"
listOfRideDate.add(date3)

val date4 = RideDate()
date4.startdate = "2020-04-20 00:00:00 +0000"
date4.enddate = "2020-04-20 00:00:00 +0000"
listOfRideDate.add(date4)

val date5 = RideDate()
date5.startdate = "2020-11-20 00:00:00 +0000"
date5.enddate = "2020-11-20 00:00:00 +0000"
listOfRideDate.add(date5)


for (i in 0..listOfRideDate.size -1) {
    // we have to remove 2018-11-05 00:00:00 +0000 and 2018-11-06 23:59:59 +0000  from list 
    println(listOfRideDate.get(i).startdate + " and " + listOfRideDate.get(i).enddate)
}

}

Это мой класс данных и основной метод. Я добавил элемент RideDate для startDate и endDate вручную. Я хочу удалить элемент динамически, если данные содержат date1.startdate = "2018-11-05 00:00:00 +0000 "date1.enddate =" 2018-11-06 23:59:59 +0000 "

, чтобы я мог его проигнорировать, пожалуйста, помогите мне, как удалить элемент из списка массивов в kotlin

Ответы [ 3 ]

1 голос
/ 13 апреля 2020

Вы можете использовать filter в вашем случае

val filtertedList = listOfRideDate.filter { element -> someLogik(element)}

См. Также следующую страницу

Фильтрация Kotlinlang

1 голос
/ 13 апреля 2020

Вы можете использовать removeAll , чтобы удалить элемент из исходного списка, если он соответствует предикату.

listOfRideDate.removeAll {
    it.startdate == "2018-11-05 00:00:00 +0000" && it.enddate == "2018-11-06 23:59:59 +0000"
}

Или вы можете filter , создав новый список с отфильтрованные элементы, предложенные Иоганном Кекселем

val filtertedList = listOfRideDate.filter {
    it.startdate == "2018-11-05 00:00:00 +0000" && it.enddate == "2018-11-06 23:59:59 +0000"
}
0 голосов
/ 13 апреля 2020

Как это:

loop@ for (i in 0 until listOfRideDate.size) {
        // we have to remove 2018-11-05 00:00:00 +0000 and 2018-11-06 23:59:59 +0000  from list
        if (listOfRideDate.get(i).startdate == "2018-11-05 00:00:00 +0000" &&  listOfRideDate.get(i).enddate == "2018-11-06 23:59:59 +0000"){
            listOfRideDate.removeAt(i)
            break@loop
        }
    }

или

listOfRideDate.removeIf {
     it.startdate == "2018-11-05 00:00:00 +0000" &&  it.enddate == "2018-11-06 23:59:59 +0000"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...