aspcms做双语网站修改配置,手机移动网站建设,一个小程序制作价格,深圳今天发生的重大新闻列表
不可变列表(List) 在Scala中#xff0c;通过List来定义不可变列表#xff0c;需要注意的是#xff0c;List本身是一个抽象类#xff0c;所以并不能直接使用List来构建对象#xff0c;需要使用它的伴生对象来构建 package com.fesco.listimport scala.::object ListD…列表
不可变列表(List) 在Scala中通过List来定义不可变列表需要注意的是List本身是一个抽象类所以并不能直接使用List来构建对象需要使用它的伴生对象来构建 package com.fesco.listimport scala.::object ListDemo {def main(args: Array[String]): Unit {// 方式一val list List[Int](2, 3, 4, 5, 6)println(list)val list2 List.apply(2, 3, 4, 5, 6)println(list2)// 方式二// :: 在list之前来追加数据val list3 1 :: listprintln(list3)// 方式三// Nil是List的子类表示一个空列表val list4 Nilprintln(list4)// 方式四val list5 1 :: 2 :: 3 :: 4 :: Nilprintln(list5)}}List被sealed修饰说明List是一个密封类那么就意味着List的子类必须和List处在同一个scala文件中即List无法直接扩展 基本操作 package com.fesco.listobject ListDemo2 {def main(args: Array[String]): Unit {val list List[Int](3, 4, 8, 1, 5, 9, 7)// 获取指定下标位置上的元素// 底层实际上是调用了父特质LinearSeq中的apply函数println(list(2))// 等价于println(list.apply(2))// 获取第一个元素// println(list(0))// 等价于println(list.head)// 获取最后一个元素println(list.last)// 追加一个元素 - 产生一个新的列表// val r1 list : 6val r1 list.:(6)println(r1)// 在头部追加元素// 从右向左计算val r2 1 : list// val r2 list.:(1)// 当出现:的时候:对着谁就从谁开始计算// 如果两边都有:那么从右向左计算// 错误的写法list : 1println(r2)// 或者// val r3 list.::(1)val r3 1 :: list// list :: 1println(r3)// 构建了列表// 从右到左先构建空列表List()然后头部拆入5在插入4val r4 1 :: 2 :: 3 :: 4 :: 5 :: List()// 等价于val r5 1 :: 2 :: 3 :: 4 :: 5 :: Nilprintln(r4)println(r5)}}列表的合并 package com.fesco.listobject ListDemo3 {def main(args: Array[String]): Unit {val list1 List[Int](1, 2, 3, 4)val list2 List[Int](5, 6, 7, 8)// 合并列表val r1 list1 list2println(r1)val r2 list1 : list2println(r2)val r3 list1 : list2println(r3)val r4 list1.concat(list2)println(r4)val r5 list1 ::: list2println(r5)}}可变列表(ListBuffer) Scala中通过ListBuffer来定义可变列表 package com.fesco.listimport scala.collection.mutable.ListBufferobject ListBufferDemo {def main(args: Array[String]): Unit {// 方式一// 调用ListBuffer类的主构造器val buffer1 new ListBuffer[Int]()buffer1 4println(buffer1)// 方式二// 调用了ListBuffer伴生对象中的apply函数val buffer2 ListBuffer[Int](1, 2, 3, 4, 5)println(buffer2)}}基本操作 package com.fesco.listimport scala.collection.mutable.ListBufferobject ListBufferDemo2 {def main(args: Array[String]): Unit {val list ListBuffer[Int](1, 2, 3, 4, 5)// 在尾部追加元素list 4list append 7println(list)// 在头部插入元素list prepend 0// list.:(2)2 : listprintln(list)// 在指定下标位置上插入元素list.insert(3, 6)println(list)// 修改指定位置上的元素list(2) 10list.update(3, 12)println(list)// 删除指定下标位置上的元素list.remove(0)println(list)// 删除指定的元素(第一个)list - 3println(list)}}合并列表 package com.fesco.listimport scala.collection.mutable.ListBufferobject ListBufferDemo3 {def main(args: Array[String]): Unit {val list1 ListBuffer[Int](1, 2, 3)val list2 ListBuffer[Int](4, 5, 6)// 将list1和list2合并// 合并之后产生一个新的列表而不是修改原列表val r1 list1 list2println(r1)// 要求将list2中的数据合并到list1中list1 list2println(list1)// 获取list1中有而list3中没有的数据 - 差集val list3 ListBuffer[Int](1, 3, 5, 7)list1 -- list3println(list1)}}