如果使用scala列表中的特定键,如何计算列表中的元素?

时间:2014-10-28 08:43:06

标签: list scala

我有以下列表结构 -

"disks" : [ 
    {
        "name" : "A",
        "memberNo" :1 
    }, 
{
        "name" : "B",
        "memberNo" :2 
    },
{
        "name" : "C",
        "memberNo" :3 
    },
{
        "name" : "D",

    }
]

我在列表中有很多元素,并且想要检查'memberNo'(如果存在) 我想要列表元素的数量。

e.g。这里的数量将是3

如何检查密钥是否存在并使用scala从列表中获取元素数?

2 个答案:

答案 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