我有一个代表一个人的案例类.
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
创建一个普通类(不是)并为它们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