缩短Kotlin的过滤器和地图

Mat*_*att 0 mapping filter kotlin

Transformation包含用户的可空对象列表中,我想要非空用户的非空ID.有没有办法缩短这个表达方式?

val list: List<Transformation> = ...
list.filter {t -> t.user!!.id !== null }.map { t -> t.user!!.id!! }
Run Code Online (Sandbox Code Playgroud)

s1m*_*nw1 8

你可以使用mapNotNull:

list.mapNotNull { t -> t.user?.id }
Run Code Online (Sandbox Code Playgroud)

这将过滤掉null列表中的所有用户以及ID(非空用户)ID null.

请注意,!!在这种情况下,您的使用不正确.这将导致NullPointerExceptionS代表null在你的列表中.您应该看看可空性运算符在Kotlin中的工作原理:https://kotlinlang.org/docs/reference/null-safety.html