查找是否在列表中找到具有特定属性值的元素

问题描述 投票:2回答:3

我正在尝试在kotlin的对象列表中查找值,并为其使用“过滤器”,但如果找到该值,则需要返回true或false,但是在这种情况下,filter会向我返回对象列表匹配。

t.filter { it.retailerId == value }

¿我在对象列表中找到此值时如何返回布尔值?

list kotlin find contains
3个回答
2
投票

如果您需要该元素正好是一个:

t.filter { it.retailerId == value }.size == 1

如果不是:

t.any { it.retailerId == value }

带有foldRight并在找到它时中断:

t.foldRight(false) {val, res ->
                if(it.retailerId == value) {
                    return@foldRight true
                } else {
                    res
                }
            }

2
投票

您可以将firstOrNull()与特定谓词一起使用:

firstOrNull()

如果val found = t.firstOrNull { it.retailerId == value } != null 不返回firstOrNull(),则意味着找到该值。


2
投票

除了null之外,您还可以将firstOrNull与相同的谓词一起使用:

any
© www.soinside.com 2019 - 2024. All rights reserved.