我有以下列表结构 -
"disks" : [
{
"name" : "A",
"memberNo" :1
},
{
"name" : "B",
"memberNo" :2
},
{
"name" : "C",
"memberNo" :3
},
{
"name" : "D",
}
]
我在列表中有很多元素,并且想要检查'memberNo'(如果存在) 我想要列表元素的数量。
e.g。这里的数量将是3
如何检查密钥是否存在并使用scala从列表中获取元素数?
答案 0 :(得分:4)
首先创建表示输入数据的类
case class Disk (name : String, memberNo : String)
下一步从存储库(或其他数据源)加载数据
val disks: List[Disk] = ...
最后算上
disks.count(d => Option(d.memberNo).isDefined)
答案 1 :(得分:2)
以与@SergeyLagutin回答类似的方式,考虑这个案例类
case class Disk (name: String, memberNo: Option[Int] = None)
缺少memberNo
的{{1}}默认为{;}};这个清单,
None
然后使用val disks = List( Disk("A", Some(1)),
Disk("B", Some(2)),
Disk("C", Some(3)),
Disk("D"))
,我们可以使用 some flatMap
过滤掉这些磁盘,如下所示,
memberNo
即,为了计算,
disks.flatMap(_.memberNo)
res: List[Int] = List(1, 2, 3)
同样,为了理解,
disks.flatMap(_.memberNo).size
res: Int = 3