gpt4 book ai didi

list - scala - 获取列表的只读子 ListView

转载 作者:行者123 更新时间:2023-12-04 22:01:56 27 4
gpt4 key购买 nike

我想要一个 ListSeq ,甚至是一个 List 一部分的只读 View 的 Iterable ,在我的特定情况下, View 将始终从第一个元素开始。
List.slicefilter 都是 O(n)。有没有比这更好的 - 我不需要任何操作,如 +- 等。只需 applymapflatMap 等来提供子列表上的列表理解语法。

答案是写我自己的类,它的迭代器会计数以知道终点在哪里?

最佳答案

流呢? Stream 是 Scala 的懒惰方式。由于 Stream 的惰性,Stream.take(),在这种情况下您需要的是 O(1)。唯一需要注意的是,如果您想在对 Stream 进行列表理解后取回 List,则需要将其转换回 List。 List.projection 为您提供一个 Stream,它具有 List 的大部分操作。

scala> val l = List(1, 2, 3, 4, 5)
l: List[Int] = List(1, 2, 3, 4, 5)

scala> val s = l.projection.take(3)
s: Stream[Int] = Stream(1, ?)

scala> s.map(_ * 2).toList
res0: List[Int] = List(2, 4, 6)

scala> (for (i <- s) yield i * 2).toList
res1: List[Int] = List(2, 4, 6)

关于list - scala - 获取列表的只读子 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1485185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com