【发布时间】:2014-03-07 22:28:02
【问题描述】:
我在 Scala 中有一个排序问题,我当然可以用蛮力解决,但我希望有一个更聪明/优雅的解决方案可用。假设我有一个没有特定顺序的字符串列表:
val keys = List("john", "jill", "ganesh", "wei", "bruce", "123", "Pantera")
然后,我随机收到这些键的值(完全公开,我在 akka 演员中遇到了这个问题,所以事件不按顺序排列):
def receive:Receive = {
case Value(key, otherStuff) => // key is an element in keys ...
我想将这些结果存储在List 中,其中Value 对象的出现顺序与keys 列表中的key 字段的顺序相同。例如,我可能在收到前两条Value 消息后就有了这个列表:
List(Value("ganesh", stuff1), Value("bruce", stuff2))
ganesh 出现在bruce 之前仅仅是因为他出现在keys 列表的前面。收到第三条消息后,我应该按照keys 建立的顺序将其插入到此列表中的正确位置。例如,在收到wei 时,我应该将他插入中间:
List(Value("ganesh", stuff1), Value("wei", stuff3), Value("bruce", stuff2))
在此过程中的任何时候,我的列表都可能不完整,但按预期顺序排列。由于我的 Value 数据中的键是多余的,所以一旦值列表完成,我就会将它们丢弃。
告诉我你有什么!
【问题讨论】:
标签: list scala data-structures functional-programming akka