我试图通过映射[objectid: String,Int]过滤包含对象的Seq[Object],其中Object.id是映射中的一个键。
我想返回一个新的Map,其中只包含id在原始映射中的对象及其Int值。因此函数应该返回Map[Object,Int]
这是我到目前为止的情况?实现这一目标的最佳方法是什么?
val peopleObjects[Person] = Seq[person1, person2, person3]
val peopleMap[String, Int] = Map[PersonId, Int]
peopleObjects.filter(person[Person] => peopleMap.contains)
我会采取稍微不同的方法。从@jwvh借用了一些:
case class Person(id: Int, name: String)
val tom = Person(4, "tom")
val jan = Person(2, "jan")
val people: Future[Set[Person]] = Future.successful(Set(tom, jan))
val peopleMap = people.map { set =>
set.map(p => (p -> p.id))(breakOut)
}
基本上,我认为case类,尤其是breakOut
,在这里非常有用。
您的命名选择有点令人困惑。我试图让它更清楚一点,但如果id
是String
,则不清楚Int
代表什么。
class Person(val id: String) {}
val (tom, jan) = (new Person("tom"), new Person("jan"))
val persons = Seq[Person](tom, jan)
val idMap = Map[String, Int]("tom"->4, "jan"->2)
val personMap = persons.filter(p => idMap.contains(p.id))
.map(p => p->idMap(p.id))
.toMap
personMap(jan) // res0: Int = 2
问题内容: 给定此代码块 我想打印出来 从高到低的顺序 谢谢! 问题答案: 在Andrew Gerrand的Golang-nuts上找到了答案 您可以通过编写len / less / swap函数来实现sort接口 对于原始帖子,请在这里https://groups.google.com/forum/#!topic/golang- nuts/FT7cjmcL7gw 找到
我知道scala.collection包中有两个极其有用的对象,可以帮助我们实现这个目标: JavaConverters(如果我想明确地说出我想要转换的内容) JavaConversions(如果我不想共同控制转换,让编译器为我做隐式工作) 但是在我的案例中应用它们有一些困难,因为我的数据结构比我在许多示例中看到的其他数据结构要复杂一点。 我在scala代码中,我希望我的scala函数返回一个Ja
我有一些函数返回带有未来的元组元素列表(Int, Int)。为简单起见,我将定义两个未来 我想用下面的标准过滤并获取这两个未来列表中的元素。 在第二个位置包含相同元素的元组 在此方案中,输出应为 我可以用普通的列表(没有未来)来做这件事,比如下面的理解 如何与期货一起做?
我正在寻找一种方法来整齐地过滤事件中的值并基于它们创建地图。我们需要知道的: 事件:事件包含字典数据结构(它是 例如:a) b) 过滤器是一个<代码>映射 值的示例: 流程看起来如何: 1)事件附带参数列表,例如 如您所见,在Product对象的映射中,选择了Manufacturer(制造商)而不是Brand(品牌)作为键(即该参数的键,而不是值)。 目标: 过滤事件的方法应该是什么样的?如何用聪
如何过滤<代码>地图 仅当列表中的任何员工具有字段值性别=“M”时,我才必须过滤。 输入:
我有这个对象,我需要过滤它。 我只需要在“数据”中输入“isEnabled”为真的值的ID