scala - 按类列表过滤scala案例类列表?
问题描述
我case class
在 Scala 中有以下内容:
case class Profile(userId: String, items: Map[String, Seq[Item]], subParts: Seq[SubPartAndCount], usedItems: Map[String, Long])
SubPartandCount
看起来像这样:
case class SubPartAndCount(subPart: String, subCount: Int)
所以我想通过 s 列表中的案例类中Profile
的值过滤s 列表。我一直试图解决这个问题,但没有成功!任何帮助将非常感激!subPart
SubPartAndCount
subPart
解决方案
使用.exists(A => Boolean)
嵌套在 a 中.filter(B => Boolean)
:
profileList.filter(_.subParts.exists(_.subPart == "Part A"))
这是一个例子:
type Item = String
case class Profile(userId: String, items: Map[String, Seq[Item]], subParts: Seq[SubPartAndCount], usedItems: Map[String, Long])
case class SubPartAndCount(subPart: String, subCount: Int)
val subPartA = SubPartAndCount("Part A", 100)
val subPartB = SubPartAndCount("Part B", 200)
val exampleItems = Map("Hello" -> Seq("World", "Galaxy", "Universe"))
val exampleUsedItems = Map("Hello" -> 1L, "Goodbye" -> 2L)
val profileList = Seq(
Profile("good", exampleItems, Seq(subPartA, subPartB), exampleUsedItems),
Profile("bad", exampleItems, Seq(subPartB, subPartB), exampleUsedItems),
Profile("good", exampleItems, Seq(subPartB, subPartA), exampleUsedItems)
)
profileList.filter(_.subParts.exists(_.subPart == "Part A"))
该语句计算为Seq
两个“好”中Profile
的一个。
希望这可以帮助。
推荐阅读
- java - Spring Rest 应用程序未启动(NullPointerException)
- python - 创建具有多个条件的 if 语句,这些条件涉及列表中的特定 df 列和字符串字符
- ios - 在 UITextView 中保存数据
- javascript - React-Redux 连接没有从 Provider 获取存储
- javascript - 如何只导出excel中选定的行?数据表
- excel - 如何将工作表中的数据作为 DataFrame 返回?
- c# - 如何在 C# 中更改组合框的外观
- javascript - 将画布交换为 div
- javascript - 如何更改此功能,以便每次单击时一次只能播放一首随机歌曲?(JavaScript)
- haskell - Haskell:创建函数实例