У меня есть массив:
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" }