#kotlin #filter
#kotlin #Фильтр
Вопрос:
Я пытаюсь выполнить фильтрацию в списке по другому списку значений, например
Я хочу сделать это
selectedAreasList = ListOf(1,2,3)
initialItemProductList.filter { it.areaId in setOf(selectedAreasList) }
вместо этого
initialItemProductList.filter { it.areaId in setOf(1,2,3) }
Потому что я не знаю, сколько элементов будет в моем списке
Комментарии:
1. Вам не нужен строго набор для вызова
in
; он будет работатьin selectedAreasList
напрямую. Но большинство реализаций Set гораздо эффективнее в этом (поскольку они могут просматривать хэш-код напрямую, а не сканировать его каждый раз), так что обычно это хорошая идея.
Ответ №1:
Вместо использования setOf
в списке используйте существующую toSet
функцию, определенную для всех Sequence
:
selectedAreasList = listOf(1, 2, 3)
// make a set before the filter to avoid repeatedly making a set
selectedAreasSet = selectedAreasList.toSet()
initialItemProductList.filter { id.areaId in selectedAreasSet }
Комментарии:
1. как прелесть… Спасибо, чувак
2. Я думаю, вы неправильно написали collection с sequence , хотя он также определен для последовательностей 🙂