在下面的自定义对象列表中,我想通过比较ViewModel类中的值来实现基于某些条件的过滤
我的列表将是这样
var inputList: MutableList<Person>
人员数据类如下
data class Person(val inContact: Boolean, val age: Int, val isFavourite:Boolean .......)
根据条件进行过滤:
val fav = mViewModel.personInContact.value //TRUE or FALSE
val personAge = mViewModel.personAge.value // INT VALUE
现在,我只想在inContact
为fav
的情况下考虑使用true
。
如果fav
是false
,我根本不想考虑inContact
。
因此,如果过滤列表逻辑是这样的,它将始终考虑fav
条件。
val filteredFinalList = inputList.filter{
(it. inContact == fav)//how to ignore this check based on fav's value?
&&
(it.age >= personAge)
&& SOME OTHER CONDITIONS PRESENT AS WELL
}
如果{{1}中只有(it. inContact == fav)
是fav
,我怎么考虑{strong},而避免 }}?
答案 0 :(得分:1)
根据您的描述,如果fav
为true
,则要确保它等于it.inContact
。如果fav
是false
,则希望表达式的计算结果为true
,以便可以检查其余条件。结果将是:
((fav && it.inContact) || !fav)
任一:
fav
是true
,而fav
等于it.inContact
。因为我们已经知道fav
是true
,所以我们只会检查it.inContact
是否是true
。因此,我们不需要比较两个值,只需检查它们是否均为true
fav
是false
,因此我们希望整个表达式的计算结果为true
。此时,!fav
将始终为true
,这将使||
表达式的值为true
。