Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质 在Scala中集合有可变(mutable)和不可变(immutable)两种类型,immutable类型的集合初始化后就不能改变了(注意与val修饰的变量进行区别) 1.Seq,是一组有序的元素。 2.Set,是一组没有重复元素的集合。 3.Map,是一组k-v对。 更多介绍...
3.我们前面的 for 循环有一个 1 to 3 ,就是IndexedSeq下的Vector。 4.String 也是属于IndexeSeq。 5.我们发现经典的数据结构比如Queue和Stack被归属到LinearSeq。 6.大家注意 Scala 中的 Map 体系有一个SortedMap,说明 Scala 的 Map 可以支持排序。 7.IndexSeq和LinearSeq的区别[IndexSeq 是通过索引来查找和...
xs map (i=> (i +1).toString()) xs flatMap (_.to(5)) xs collect {caseiif(i==2)=> i *3} //转换方法(Conversions) //将Traversable转换成更具体的集合 valx=Traversable(2,3) x.toArray x.toList x.toIterable x.toSeq x.toIndexedSeq x.toStream x.toSet //x.toMap // x必须是ke...
转换器(Conversion)操作包括toArray,toList,toIterable,toSeq,toIndexedSeq,toStream,toSet,和toMap,它们可以按照某种特定的方法对一个Traversable 容器进行转换。等容器类型已经与所需类型相匹配的时候,所有这些转换器都会不加改变的返回该容器。例如,对一个list使用toList,返回的结果就是list本身。 拷贝(Copying)操作...
在Scala的容器层级中,序列容器的根是collection.Seq特质,是对所有可变和不可变序列的抽象。序列中每个元素均带有一个从0开始计数的固定索引位置。特质Seq具有两个子特质LinearSeq和IndexedSeq,这两个子特质没有添加任何新的方法,只是针对特殊情况对部分方法进行重载,以提供更高效的实现。LinearSeq序列具有高效的head和...
Click the link to hear it: voicerecording.org/id/123 case后面还可以加if语句,我们称之为模式守卫。 def showImportantNotification(notification: Notification, importantPeopleInfo: Seq[String]): String = { notification match { case Email(sender, _, _) if importantPeopleInfo.contains(sender) => "Yo...
// start:前缀 sep:分隔符 end:后缀def mkString(start: String, sep: String, end: String): String = addString(new StringBuilder(), start, sep, end).toString// seq 分隔符def mkString(sep: String): String = mkString("", sep, "")// 如果不指定分隔符 默认使用""分隔def mkString: ...
parrotShelter.addAnimal(newParrot)valparrot:Parrot= parrotShelter.getAnimal println(parrot.speak) } 输出:Woof!Meow!Squawk! 这个示例中,我们定义了一个Animal特质和三个实现了该特质的类:Dog,Cat和Parrot。然后我们定义了一个AnimalShelter类,它使用了泛型类型参数A,并且限制了A必须是Animal的子类型。这样我们就...
Scala同时支持可变集合和不可变集合,包含两个包: 可变集合:scala.collection.mutable 不可变集合:scala.collection.immutableScala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iter ...
val values = seqno.map(x => x * x) for ( x <- values ){ println(x ) } // 1 // 4 // 9 } 4.2 简化涨薪策略代码 //定义加薪的规则 def smallPromotion(salaries: List[Double]): List[Double] = salaries.map(salary => salary * 1.2) ...