케이스 클래스가 있고 Person (name : String, age : Int, address : String)이라고 말할 수 있으며 인스턴스 목록이 있습니다.
object HelloWorld {
def main(args: Array[String]) {
case class Person(name: String,age: Int,location :String)
val per1=Person("gaurav",21,"chennai")
val per2=Person("gaurav",21,"pune")
val per3=Person("sur",26,"delhi")
val lst=per1::per2::per3::Nil
}
}
이 케이스 클래스의 인스턴스를 이름과 나이라고하는 두 필드에서만 비교하고 중복 된 항목이 있으면 제거하려면 어떻게해야합니까?
Scala 2.13.x를 사용하는 경우 distinctBy()
.
List(Person("gaurav",21,"chennai")
,Person("gaurav",21,"pune")
,Person("sur",26,"delhi"))
.distinctBy(p => (p.name,p.age))
//res0: List[Person] = List(Person(gaurav,21,chennai), Person(sur,26,delhi))
스케일 2.13.x 이전
없이는 distinctBy()
아마도 List
결과를 만들기 위해 접을 것입니다 .
....foldLeft((List.empty[Person],Set.empty[(String,Int)])){
case ((acc,seen), prsn@Person(nm,age,_)) =>
if (seen(nm -> age)) (acc, seen)
else (prsn::acc, seen+(nm -> age))
}._1.reverse
//same result
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다