[原创] SCALA一些集合类型语法,+,++,+:,:+,++:,:++,::,:::等,防止踩坑时间:2022-08-09 16:58:27### 1、不可变数组操作 ```scala //======================使用val定义数组============================ //定义一个定长数组,长度为10,初始化为null val strArr = Array[String](10) //给第一个元素赋值 strArr(0) = "abc" //定义一个定长数组,长度为10,初始化为0 val intArr = Array[Int](10) //给第一个元素赋值 intArr(0) = 1 //=======================使用var定义数组============================ //使用var定义数组,当增加元素后,再将添加元素后的数组赋给原来的数组变量 var strArr = Array[String]() //在数组的头部添加元素,“+”号的方向表示往哪个方向添加元素,底层应该是链表 //一定要注意“=”,没有“=”号,无法给strArr添加元素 strArr +:= "abc" //在数组的后面添加元素 strArr :+= "bcd" //往后面添加一个集合 strArr :++= Array("hij","123") //往前面添加一个集合 strArr ++:= Array("abc","bcd","efg") //默认不加:是往后面增加一个集合 strArr ++= Array("345","222") //看上面的操作,因为使用了var修饰,应该是指将元素添加后的新数组重新指定给原来的变量,这种方式应该会效率会低一些。 ``` ### 2、可变数组操作 ```scala //使用ArrayBuffer来创建数组,感觉有点像Java里的ArrayList import scala.collection.mutable.ArrayBuffer //======================使用val定义数组============================ val arrayBuffer = ArrayBuffer[String]() //添加单个元素,这里特别注意,这里是不需要加“:”的。 arrayBuffer += "abc" //添加多个元素,可以用Array,Seq arrayBuffer ++= Seq("abc","bcd") arrayBuffer ++= Array("abc","bcd") //删除元素 arrayBuffer -= "abc" arrayBuffer --= Seq("abc","bcd") arrayBuffer --= Array("abc","bcd") ``` ### 3、不可变Map ```scala //map中的元素只能在初始化的时候设置 val map = scala.collection.immutable.Map[String,String](("abc" -> "1"),("bcd" -> "2")) //如果使用var修饰,那么添加元素可以使用如下方式 map += ("cde" -> "3") //这种方式其实是将添加了元素后的另外一个map赋值给了map变量。 ``` ### 4、可变Map ```scala //map中元素可以通过+=来添加 val map = scala.collection.mutable.Map[String,String]() //增加单个key value map += ("abc" -> "1") //增加多个key value map1 ++= Map(("efg" -> "3"),("hij" -> "4")) ``` ### 5、操作List ```scala /** * 集合间的链接交互 */ val left = List(1,2,3) val right = List(4,5,6) //以下操作等价 println(left ++ right) // List(1,2,3,4,5,6) println(left ++: right) // List(1,2,3,4,5,6) println(right.++:(left)) // List(1,2,3,4,5,6) println(right.:::(left)) // List(1,2,3,4,5,6) //以下操作等价 println(0 +: left) //List(0,1,2,3) println(left.+:(0)) //List(0,1,2,3) //以下操作等价 println(left :+ 4 ) //List(1,2,3,4) println(left.:+(4) ) //List(1,2,3,4) //以下操作等价 println(0 :: left ) //List(0,1,2,3) println(left.::(0) ) //List(0,1,2,3) ```