代码之家  ›  专栏  ›  技术社区  ›  joel DeyaEldeen

seq-scala中的reverse map与reverse.map

  •  0
  • joel DeyaEldeen  · 技术社区  · 6 年前

    为什么有方法 reverseMap 在scala中的seq上,当它看起来与 reverse.map ?

    一个可能比另一个快吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Jörg W Mittag    6 年前

    对于可以有效向后迭代的集合(例如,双链接列表或可索引集合), reverseMap 可能更节省内存和时间,因为 reverse 是类型保留。也就是说,如果在一个数组上调用它,它将创建一个反向的数组副本,然后 map 那个数组。(如果 颠倒 创建了反向迭代器而不是数组,情况会有所不同。)

    这需要额外的O(N)空间,并对数组进行两次迭代。反之 反向映射 只迭代一次,不需要额外的空间。

    不幸的是,通常不可能将这种优化留给编译器。特别是,找出 reverse.map 反向映射 相同的是 功能问题 这是不可决定的。