Size: a a a

Kotlin Community

2019 November 02

AN

Alexander Nozik in Kotlin Community
Vadim Morozov
Привет всем
я добавляю в ArrayList свои target
val target = targetSnapshot.getValue(Target::class.java)
target?.let { targetList.add(it) }


но как мне добавить их отфильтрованными по полю из модели Target, пробовал таким образом?
target?.let { targetList.filter { it.priority == 1 } }
В смысле, добавить если удовлетворяет условию?
источник

VM

Vadim Morozov in Kotlin Community
Alexander Nozik
В смысле, добавить если удовлетворяет условию?
ну через add я добавляю все элементы
а я хочу добавить только те которые имею поле priority == 1
и пробую писать вот уже что то подобное
val sortedList = targetList.sortedWith(compareBy{it.priority == 1}).toMutableList()
                   target?.let { sortedList.add(it) }
источник

AN

Alexander Nozik in Kotlin Community
Vadim Morozov
ну через add я добавляю все элементы
а я хочу добавить только те которые имею поле priority == 1
и пробую писать вот уже что то подобное
val sortedList = targetList.sortedWith(compareBy{it.priority == 1}).toMutableList()
                   target?.let { sortedList.add(it) }
Мудрить меньше надо:
if(target?.priority == 1) targets.add(target)
источник

AN

Alexander Nozik in Kotlin Community
Если вы хотите потом отсортировать результат, то есть функция sortBy
источник

VM

Vadim Morozov in Kotlin Community
да я пробовал писать такое
                    target?.let { targetList.sortBy { it.priority } }

но в логах отображтся все модели
источник

AN

Alexander Nozik in Kotlin Community
Какая-то фигня написана
источник

AN

Alexander Nozik in Kotlin Community
То, что внутри let вообще не использует target.
источник

AN

Alexander Nozik in Kotlin Community
У вас явно беда с let-ами. Напишите для начала через if, чтобы понять, что вы хотите.
источник

VM

Vadim Morozov in Kotlin Community
Alexander Nozik
Мудрить меньше надо:
if(target?.priority == 1) targets.add(target)
ну так работает да
а sortBy может подойти для возрастания и убывания?
источник

IM

Ivan Miroshnichenko in Kotlin Community
sortByDescending
источник

VM

Vadim Morozov in Kotlin Community
Ivan Miroshnichenko
sortByDescending
как можно это в if этот запихнуть?
if (target?.priority == 1) targetList.add(target)
источник

IM

Ivan Miroshnichenko in Kotlin Community
ну можешь собрать свой список, а потом его отсортировать один раз
источник

AN

Alexander Nozik in Kotlin Community
Ivan Miroshnichenko
ну можешь собрать свой список, а потом его отсортировать один раз
Да, это самое правильное
источник

AN

Alexander Nozik in Kotlin Community
Есть кстати еще SortedSet, который автоматом будет сортировать все добавляемые элементы. В нем правда не будет доступа по индексу.
источник

IM

Ivan Miroshnichenko in Kotlin Community
можно конечно TreeSet использовать, если элементы все разные
источник

IM

Ivan Miroshnichenko in Kotlin Community
😊👍
источник

VM

Vadim Morozov in Kotlin Community
@kissedcode  пробую писать такое
 target?.let { targetList.sortByDescending { it.priority } }
источник

AN

Alexander Nozik in Kotlin Community
Vadim Morozov
@kissedcode  пробую писать такое
 target?.let { targetList.sortByDescending { it.priority } }
🤦‍♂ по-моему вопрос для @kotlin_start
источник

VM

Vadim Morozov in Kotlin Community
запутался(
источник

VM

Vadim Morozov in Kotlin Community
собрать мой список
ну ок
это targetList
после его отсортировать
тоже сделал
источник