list - 在 Scala : What do I actually get? 中创建列表和集合

标签 list scala set scala-collections

如果我创建一个 Set在 Scala 中使用 Set(1, 2, 3)我得到一个 immutable.Set .

scala> val s = Set(1, 2, 3)
s: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

Q1:这究竟是怎样的一套?它是一些哈希集吗?例如,查找的复杂性是什么?

Q2:我在哪里可以阅读这种“设置创建”方法?我还以为是apply方法,但文档说“此方法允许将集合解释为谓词。它返回 true,如果此集合包含元素 elem。”

同样,如果我创建一个 List使用 List(1, 2, 3) ,我得到
scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)

scala> l.getClass
res13: java.lang.Class[_] = class scala.$colon$colon

Q3:再说一遍,我能得到什么?在这种情况下,我什至无法立即判断它是否可变,因为它甚至不是 scala.collection 的一部分。 - 包。为什么这个活在scala包?

Q4:我可以在 API 中的何处阅读有关此“列表创建”方法的信息?

最佳答案

问题 1:在这种特定情况下,您会收到 Set3这是一组不可变的正好三个参数。大概它使用 if-else if-else 来检查包含。如果你创建了一个超过 4 个元素的集合,你会得到一个不可变的哈希集。

Q2:您需要查看 apply对象 Set 的方法,而不是类。 apply Set 类的方法是您执行时调用的方法 someSet(something) .

Q3:scala.::是一个非空的不可变单向链表(如果你做 List() 不带参数,你会得到 Nil 这是一个不可变的空列表)。它住在 scala包,因为它被认为是非常基本的,所以它属于基础包。

问题 4:参见问题 2。

关于list - 在 Scala : What do I actually get? 中创建列表和集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149524/

相关文章:

arrays - 单笔最大利润

scala - 将案例类用于可变状态是否(真的)不好?

python - 如何在不使用 "|"的情况下将两组连接在一行中

sql - 在一组数字中查找连续范围

python - 有没有办法将列表中的索引组合起来

C# 从多个方法访问列表

c# - 如果删除元素,List<T> 会缩小大小

过滤偶数的Scala高阶函数

scala - 如果需要,Akka actor 可以从其邮箱中删除消息吗?

JavaScript : making a factory item display proper value on the field containing music albums set