我有一個問題,它在很多方面都打敗了我。太復雜了,我可憐的小腦袋無法解釋,所以我創建了一個抽象版本。
我有一個型別為 A 的物件串列,我們稱之為 L
L = List[A]
在 A 中有另一個具有屬性 X 的物件 B 串列。
收集所有具有 B 且 X == 到 V 的 A
L.filter(x => x.B.exists(y => y.X == V)).map(a => a.B)
來自 REPL 的示例代碼
class B(val X:Int){
override def toString =
s"b:$X"
}
class A(val b: List[B]) {
override def toString =
s"a: $b"
}
val listA1 = List(new B(1), new B(2), new B(3))
val listA2 = List(new B(1), new B(7), new B(12))
val listA3 = List(new B(9), new B(5), new B(3))
val L = List(new A(listA1), new A(listA2), new A(listA3))
println(L) // List(a: List(b:1, b:2, b:3), a: List(b:1, b:7, b:12), a: List(b:9, b:5, b:3))
val res = L.filter(x => x.b.exists(y => y.X == 3)).map(a => a.b)
println(res) // List(List(b:1, b:2, b:3), List(b:9, b:5, b:3))
現在的問題 - 如何獲取 X 值為 3 的 B 物件的串列?
這是一個串列如下
List(b:3, b:3)
在現實世界中,我追求 B 的其他屬性,但首先我需要獲得 B。
uj5u.com熱心網友回復:
如果我理解你的要求,這就是你所需要的。
L.flatMap(_.b.filter(_.X == 3))
順便說一句,您使用的大寫/小寫變數名不一致、隨意且令人困惑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372709.html
上一篇:提取器不回傳例外
下一篇:呼叫rpc方法之間的功能
