У меня есть массив:
var month: List<String> = arrayListOf("January", "February", "March")
Я должен отфильтровать список, чтобы у меня остался только "January".
У меня есть массив:
var month: List<String> = arrayListOf("January", "February", "March")
Я должен отфильтровать список, чтобы у меня остался только "January".
Вы можете использовать этот код, чтобы отфильтровать январь из массива, используя этот код
var month: List<String> = arrayListOf("January", "February", "March")
// to get the result as list
var monthList: List<String> = month.filter { s -> s == "January" }
// to get a string
var selectedMonth: String = month.filter { s -> s == "January" }.single()
Существует множество функций для фильтрации коллекций, если вы хотите сохранить только значения, соответствующие "January", вы можете использовать простой filter():
val months = listOf("January", "February", "March")
months.filter { month -> month == "January" } // with explicit parameter name
months.filter { it == "January" } // with implicit parameter name "it"
Это даст вам список, содержащий только "January".
Если вы хотите, чтобы все месяцы не были "January", вы можете отменить это условие с помощью != или использовать filterNot()
months.filter { it != "January" }
months.filterNot { it == "January" }
Они предоставят вам список, содержащий "February" и "March".
Обратите внимание, что в отличие от Java, использование операторов == и != в Kotlin фактически совпадает с вызовом функции equals на объектах. Подробнее см. В документах equality.
Полный список функций коллекции в стандартной библиотеке приведен в ссылке API.
Вы хотите отфильтровать этот список строк, содержащих месяцы.
var month : List<String> = arrayListOf("January", "February", "March")
Вы можете использовать filterNot() списка. Возвращает список, содержащий все элементы, кроме заданного предиката.
var filteredMonthList : List<String> = month.filterNot { s -> s == "January" }
// results: ["February", "March"]
Вы можете использовать метод списка filter(). Возвращает список, содержащий все элементы, соответствующие данному предикату.
var filteredMonthList : List<String> = month.filter { s -> s == "January" }
// results: ["January"]
После filter() если мы используем метод single() он вернет одно значение и сгенерирует исключение, если в списке будет более одного значения.
var filteredMonth : String = month.filter { s -> s == "January" }.single()
// result: "January"
Я просто общаюсь, если у вас есть настраиваемый список и проверьте, является ли он нулевым или пустым, вы можете проверить в Kotlin в одной строке Просто сделайте это так.
fun filterList(listCutom: List<Custom>?) {
var fiterList = listCutom!!.filter { it.label != "" }
//Here you can get the list which is not having any kind of lable blank
}
Вы также можете проверить несколько условий.
fun filterList(listCutom: List<Custom>?) {
var fiterList = listCutom!!.filter { it.label != "" && it.value != ""}
//Here you can get the list which is not having any kind of lable or value blank
}
Примечание. Я предполагаю, что метка и значение являются переменными класса Пользовательский.
Вы также можете использовать find или findLast. Это специально предназначено для возврата только одного значения вместо списка String возвращаемого в случае filter.
var month = arrayListOf("January", "February", "March")
var result = month.find { s -> s == "January" }