У меня есть 2 вектора, определенные с помощью следующих данных: vector1 и vector2 определены как Vector [Person], где у человека могут быть записи как ученика, так и учителя.
val v1 = """[
{
"category":"common",
"type":"student",
"roles":[
{
"name":"A",
"type":"Type1"
},
{
"name":"B",
"type":"Type1"
},
{
"name":"C",
"type":"Type2"
},
{
"name":"D",
"type":"Type2"
}
]
}
]"""
val v2 = """[
{
"category":"common",
"type":"student",
"roles":[
{
"name":"A",
"type":"Type1"
},
{
"name":"B",
"type":"Type1"
},
{
"name":"C",
"type":"Type2"
},
{
"name":"D",
"type":"Type2"
}
]
},
{
"type":"Teacher",
"roles":[
{
"name":"AB",
"type":"Type1"
},
{
"name":"BC",
"type":"Type1"
},
{
"name":"CD",
"type":"Type2"
},
{
"name":"DE",
"type":"Type2"
}
]
}
]"""
Мне нужно сравнить оба этих вектора в зависимости от атрибута, т.е. типа. Это значение может быть учеником или учителем. Если тип такой же, мне следует проверить роли.
Я пробовал использовать zipwithindex / index, но похоже, что сравниваются только элементы в этом индексе. Есть ли способ сравнения на основе типа каждого элемента в векторе. Я хочу объявить оба вектора равными, если типы и роли одинаковы.
Примечание: приведенные выше примеры являются jsons, и мы считываем их в наш класс case
case class Person(
category: String,
name: Option[String],
`type`: Option[String],
roles: List[Role]
)
case class Role(name: String, `type`: String)
и vector1 / vector2 читаются как Vector[Person]