gpt4 book ai didi

list - 如何替换列表中的给定项目?

转载 作者:行者123 更新时间:2023-12-04 08:58:32 26 4
gpt4 key购买 nike

这很好地描述了这个问题:

scala> var l2 = List(1,2,3)
l2: List[Int] = List(1, 2, 3)

scala> l2(2) = 55
<console>:10: error: value update is not a member of List[Int]
l2(2) = 55
^

最佳答案

scala.List是不可变的,这意味着您无法就地更新它。如果要创建包含更新映射的列表副本,可以执行以下操作:

val updated = l2.updated( 2, 55 )

scala.collection.mutable 中也有可变的有序序列类型。 ,如 Buffer看起来更像你想要的类型。如果您尝试以下操作,您应该会取得更大的成功:
scala> import scala.collection._
import scala.collection._
scala> val b = mutable.Buffer(1,2,3)
b: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3)
scala> b(2) = 55
scala> b
res1: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 55)

编辑:请注意,其他一些答案提到您应该使用“可变列表类型” - 这是真的,但 Scala 中的“列表”只是指单链表,而在 Java 中它通常用于任何有序,随机访问集合。还有一个 DoubleLinkedList ,它更像是一个 Java LinkedList , 和 MutableList ,这是用于一些其他类型的内部的类型。

一般来说,您在 Scala 中可能想要的是 Buffer对于这份工作;特别是因为默认实现是 ArrayBuffer ,与 ArrayList 非常接近,大多数人的默认值,在 Java 中。

但是,如果您想找出最接近 Scala 世界的 Java 集合接口(interface)“映射”是什么,最简单的方法可能就是检查 JavaConversions 是什么。做。在这种情况下,您可以看到映射到 Buffer :
scala.collection.mutable.Buffer <=> java.util.List

关于list - 如何替换列表中的给定项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094314/

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