Kotlin Collection indexOf 使用引用相等 ===
Kotlin Collection indexOf using reference equality ===
在 Kotlin 中,indexOf(x)
调用 Collection
returns 第一个元素的索引 equals(x)
(结构相等 ==
)
如何获得基于引用相等性 (===
) 的索引?
一个解决方案是使用 indexOfFirst
:
data class Person(
val firstName: String,
val lastName: String,
val age: Int
)
val targetPerson = Person("Greg", "Grimaldus", 47)
val people = listOf(
Person("Tabitha", "Thimblewort", 38),
Person("Shawn", "Been", 27),
// not this one
Person("Greg", "Grimaldus", 47),
// this one
targetPerson
)
people.indexOfFirst { it === targetPerson }
同样可以对任何 Collection
执行此操作,但请注意,如果正在使用的 Collection
是 Set
,您想要的元素可能不存在,因为 Set
s 使用.equals()
来消除重复元素。
在 Kotlin 中,indexOf(x)
调用 Collection
returns 第一个元素的索引 equals(x)
(结构相等 ==
)
如何获得基于引用相等性 (===
) 的索引?
一个解决方案是使用 indexOfFirst
:
data class Person(
val firstName: String,
val lastName: String,
val age: Int
)
val targetPerson = Person("Greg", "Grimaldus", 47)
val people = listOf(
Person("Tabitha", "Thimblewort", 38),
Person("Shawn", "Been", 27),
// not this one
Person("Greg", "Grimaldus", 47),
// this one
targetPerson
)
people.indexOfFirst { it === targetPerson }
同样可以对任何 Collection
执行此操作,但请注意,如果正在使用的 Collection
是 Set
,您想要的元素可能不存在,因为 Set
s 使用.equals()
来消除重复元素。