Intereting Posts

Как отфильтровать значение от arraylist в Kotlin

У меня есть массив:

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 aa string var selectedMonth: String = month.filter { s -> s == "January" }.single() println("the value 555 is $monthList") println("the value 555 is $selectedMonth") 

Для фильтрации коллекций существует ряд функций, если вы хотите сохранить только значения, соответствующие "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() "January" , вы можете либо отменить условие, используя != , filterNot() использовать filterNot() :

 months.filter { it != "January" } months.filterNot { it == "January" } 

Они дадут вам список, содержащий "February" и "March" .

Обратите внимание: в отличие от Java, использование операторов == и != В Котлине фактически совпадает с вызовом функции equals на объектах. Подробнее см. В документах о равенстве .

Полный список функций сбора в стандартной библиотеке см. В ссылке API .

Я просто общаюсь с этим, если у вас есть пользовательский список и проверьте, является ли он пустым или пустым, вы можете проверить его в одной строке. Просто сделайте это так

  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 } 

Примечание. Я предполагаю, что label & value являются переменными класса Custom Model.

Вы хотите отфильтровать этот список строк, содержащих месяцы.

 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" 

Вы также можете использовать find или findLast . Это специально предназначено для возврата только одного значения вместо списка String возвращаемого в случае filter .

 var month: List<String> = arrayListOf("January", "February", "March") var result = month.find { s -> s == "January" }