【发布时间】:2020-08-25 06:35:10
【问题描述】:
我用以下数据定义了 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/indices,但看起来只比较了该索引中的元素。有没有一种方法可以根据向量中每个元素的类型进行比较。如果类型和角色相同,我想声明两个向量相等。
注意:上面的例子是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]
【问题讨论】:
-
那些是 jsons 而不是 scala 对象,您能否扩展您的问题,即如何将它们用作胜利者?另外,您能否更准确地了解您的预期输出和您尝试过的内容?
-
不过,你的问题还不清楚,你想做什么?什么是预期的输出?向我们展示您尝试过的代码。