Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何在scala中匹配两个列表中的元素?_List_Scala_Collections - Fatal编程技术网

List 如何在scala中匹配两个列表中的元素?

List 如何在scala中匹配两个列表中的元素?,list,scala,collections,List,Scala,Collections,我有两份清单如下: val a = List((HarddiskVolume1,31,1), (C:,46552070,433057), (E:,5435,1728), (_Total,46557536,434786)) val b = List(C:, E:) 我希望输出如下: o/p (C:,46552070433057),(E:,54351728) 我如何使用scala获得所需的输出???使用收集像这样 val a = List(("HarddiskVolume1",31,1), ("

我有两份清单如下:

val a = List((HarddiskVolume1,31,1), (C:,46552070,433057), (E:,5435,1728), (_Total,46557536,434786))
val b =  List(C:, E:)
我希望输出如下: o/p (C:,46552070433057),(E:,54351728)


我如何使用scala获得所需的输出???

使用
收集
像这样

val a = List(("HarddiskVolume1",31,1), ("C:",46552070,433057), ("E:",5435,1728), ("_Total",46557536,434786))     

val b =  List("C:", "E:")

a.filter(x => b.contains(x._1))  // if b is large, consider making it a set.
// res0: List[(String, Int, Int)] = List((C:,46552070,433057), (E:,5435,1728))
val keys = b.toSet
a collect { case z@(x,_,_) if keys(x) => z }
更新

其他类似方法包括

for ( z <- a if keys(z._1) ) yield z

a collect { case z if keys(z._1) => z }

( a partition ( z =>  keys(z._1) ) )._1
(z)的

(一个分区(z=>keys(z._1)))。_1

像这样使用
收集

val keys = b.toSet
a collect { case z@(x,_,_) if keys(x) => z }
更新

其他类似方法包括

for ( z <- a if keys(z._1) ) yield z

a collect { case z if keys(z._1) => z }

( a partition ( z =>  keys(z._1) ) )._1
(z)的

(一个分区(z=>keys(z._1)))。_1

如果数据作为列表中的列表存在,则回答@Yogesh:

val aa =List(List(("HarddiskVolume1",31,1), ("C:",46552070,433057), ("E:",5435,1728), ("_Total",46557536,434786)),
             List(("HarddiskVolume1",31,1), ("C:",46552070,433057), ("E:",5435,1728), ("_Total",46557536,434786))
            )
val b =  List("C:", "E:")

aa.map(l => l.filter(x => b.exists(_== x._1))) 

与Shyamendra类似,但在列表上使用exists运算符。

如果数据作为列表中的列表存在,则应答@Yogesh:

val aa =List(List(("HarddiskVolume1",31,1), ("C:",46552070,433057), ("E:",5435,1728), ("_Total",46557536,434786)),
             List(("HarddiskVolume1",31,1), ("C:",46552070,433057), ("E:",5435,1728), ("_Total",46557536,434786))
            )
val b =  List("C:", "E:")

aa.map(l => l.filter(x => b.exists(_== x._1))) 

与Shyamendra类似,但在列表上使用exists运算符。

Hi如果我的列表为val a=list(list((硬磁盘卷1,31,1),(C:,46552070433057),(E:,54351728),(u Total,46557536434786)),list((硬磁盘卷1,31,1),(C:,46552070430557),(E:,54351728),(u Total,46557536434786)))那么过滤器应该如何添加呢?嗨,我有同样的问题,如果我的列表为val a=list(list((硬盘卷1,31,1),(C:,46552070433057),(E:,54351728),(u Total,46557536434786)),list((硬盘卷1,31,1),(C:,4655207043057),(E:,54351728),(u Total,46557536434786)),那么过滤器应该如何添加呢?