对Scala案例类执行不区分大小写的比较的最佳方法

sur*_*nto 5 scala

我有一个代表一个人的案例类.

case class Person(firstName: String, lastName: String)
Run Code Online (Sandbox Code Playgroud)

我需要以不区分大小写的方式根据名字和姓氏进行人物比较,例如:

Person("John", "Doe") == Person("john", "Doe") // should return true
Run Code Online (Sandbox Code Playgroud)

或者在Seq

Seq(Person("John", "Doe")).contains(Person("john", "Doe")
Run Code Online (Sandbox Code Playgroud)

最简单的方法是覆盖Person case类中的equals和hashCode方法,但是如果在类的情况下不能覆盖equals和hashCode,那么以干净的方式执行此操作的最佳方法是什么.

有人可以推荐一种解决这种区分大小写问题的惯用方法吗?

谢谢,Suriyanto

Vas*_*kov 0

创建一个普通类(不是)并为它们case编写equals/ 。hashcodeIDE 通常会提供相应的代码片段(因为它们在 Java 中是必需的)。

class Person(val firstName: String, val lastName: String) {
    override def hashCode = ???
    override def equals = ???
}
Run Code Online (Sandbox Code Playgroud)

或者,如果我们正在解决“XY 问题”,您应该写下您更广泛的关注点/目标。也许,实际上,您应该有一些仅带有小写名称的Map和-es,或者数据库内的令牌。只是猜测...case classLong