import java.util.ArrayList
import scala.collection.JavaConverters._
val array = new ArrayList[Int]()
array.add(1)
array.add(2)
array.add(3)
array.add(4)
//使用Java API实现累加
val sum = array.stream().reduce(new BinaryOperator[Int] {
override def apply(t: Int, u: Int): Int = {
t + u
}
}).get()
//通常引入JavaConverters之后,可以使用加强版本的集合操作
var total=array.asScala.sum
//分配大小为10,每个元素都分配了默认值
scala> var array=new Array[Int](10)
array: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
array(0)=1
array.update(1,2)
创建的时候指定步长,相比较于Array,Range只读,不允许修改。
var range = new Range(0,10,2)
var range = 0 to 10 by 2
var range = 0 until 10 by 2
按照下标顺序排列的向量,向量不支持修改
var vec = Vector(0,10,1)
var vector = for(i<-0 to 10 by 2 )yield i
scala> var it=Iterator(1,2,3)
it: Iterator[Int] = non-empty iterator
scala> it.foreach(println)
1
2
3
scala> it.isEmpty
res41: Boolean = true
List
:: +: 追加元素
var list = List(1,2,3)
list::=10
print(list) //结果为List(10, 1, 2, 3)
var list = List(1,2,3)
list+:=11
print(list) //结果为List(11, 1, 2, 3)
var list = List(1,2,3)
var list2 = List(4,5,6)
list:::=list2 ////在list元素之前追加prefix元素,生成新的集合
println(list) //结果为List(4, 5, 6, 1, 2, 3)
删除前n个元素,返回值为删除后的集合,原集合不变
在这里插入代码片 var list = List(1,2,3)
var res = list.drop(2)
println(res)
println(list)
//结果
//List(3)
//List(1, 2, 3)
返回值为slice(x,y)原集合下标x到下标y的新集合,原集合不变
var list = List(1,2,3,4,5)
var res = list.slice(0,2)
println(res)
println(list)
//结果:
//List(1, 2)
//List(1, 2, 3, 4, 5)
颠倒集合元素顺序
scala> var list=List(1,2,3)
list: List[Int] = List(1, 2, 3)
scala> list.reverse
res105: List[Int] = List(3, 2, 1)
take/takeRight
var list = List(1,2,3,4,5)
var res = list.take(2)
println(res)
//结果:List(1, 2)
var list = List(1,2,3,4,5)
var res = list.takeWhile(x=>x<3)
println(res)
//结果:List(1, 2)
scala> var list=List(1,2,3)
list: List[Int] = List(1, 2, 3)
scala> list.head
res111: Int = 1
scala> list.tail
res112: List[Int] = List(2, 3)
scala> list.last
res113: Int = 3
update
scala> import scala.collection.mutable._
import scala.collection.mutable._
scala> var list=ListBuffer[Int]()
list: scala.collection.mutable.ListBuffer[Int] = ListBuffer()
scala> var list=ListBuffer(1,2,3)
list: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)
scala> list.update(0,10)
scala> list
res1: scala.collection.mutable.ListBuffer[Int] = ListBuffer(10, 2, 3)
+= +=: ++= ++=:
+=集合末尾添加元素,+=:集合开始添加元素,++=追加集合在尾部,++=:在元素尾部添加元
scala> var list=ListBuffer(1,2,3)
list: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)
scala> list.+=(4)
res12: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4)
scala> list.+=:(5)
res13: scala.collection.mutable.ListBuffer[Int] = ListBuffer(5, 1, 2, 3, 4)
scala> list.++=(List(6,7,8))
res14: scala.collection.mutable.ListBuffer[Int] = ListBuffer(5, 1, 2, 3, 4, 6, 7, 8)
删除 - | -=
区别-表示创建新的集合但是不包含删除的这个元素,-=表示删除集合指定元素,更新原始集合
val listBuffer = ListBuffer[Int](1,2,3)
val ints = listBuffer.-(1)
println(ints)
println(listBuffer)
//结果:
//ListBuffer(2, 3)
//ListBuffer(1, 2, 3)
val listBuffer = ListBuffer[Int](1,2,3)
val ints = listBuffer.-=(1)
println(ints)
println(listBuffer)
//结果为:
//ListBuffer(2, 3)
//ListBuffer(2, 3)
删除指定位置元素
val listBuffer = ListBuffer(1,2,3)
listBuffer.remove(0)
print(listBuffer)
//结果:ListBuffer(2, 3)
在指定位置之前插入元素
scala> list
res27: scala.collection.mutable.ListBuffer[Int] = ListBuffer(2, 3)
scala> list.insert(0,4)
scala> list
res29: scala.collection.mutable.ListBuffer[Int] = ListBuffer(4, 2, 3)
scala> list.insertAll(2,List(1,2,3))
scala> list
res31: scala.collection.mutable.ListBuffer[Int] = ListBuffer(4, 2, 1, 2, 3, 3)
将list1结果添加到list2中
var list1 = List(1,2,3)
var list2 = ListBuffer(5,5)
list2.prependToList(list1)
print(list2)
//结果:ListBuffer(5, 5, 1, 2, 3)
+创建新的Set并添加元素,不修改原始set,+=修改原始set,类似-、-=就不在阐述
var s = Set[Int](1,2,3,4)
val ints = s.+(6)
println(ints)
println(s)
//结果:
//Set(1, 6, 2, 3, 4)
//Set(1, 2, 3, 4)
var s = Set[Int](1,2,3,4)
val ints = s.+=(6)
println(ints)
println(s)
//结果:
//()
//Set(1, 6, 2, 3, 4)
返回集合长度
添加删除 + =+ - -=
scala> var s=scala.collection.mutable.Set(1,2,3)
s: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
scala> s.+(4)
res25: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)
scala> s
res26: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
scala> s.+=(4)
res27: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)
scala> s
res28: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)
scala> s.-(2)
res29: scala.collection.mutable.Set[Int] = Set(1, 3, 4)
scala> s
res30: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)
scala> s.-=(2)
res31: scala.collection.mutable.Set[Int] = Set(1, 3, 4)
scala> s
res32: scala.collection.mutable.Set[Int] = Set(1, 3, 4)
remove/add
scala> var s=scala.collection.mutable.Set(1,2,3)
s: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
scala> s.remove(2)
res37: Boolean = true
scala> s.remove(-1)
res38: Boolean = false
scala> s
res39: scala.collection.mutable.Set[Int] = Set(1, 3)
scala> s.add(4)
res41: Boolean = true
添加删除+ += - -=
scala> import scala.collection.immutable.HashMap
import scala.collection.immutable.HashMap
scala> var hm=HashMap[String,String](("建设","001"),("招商","002"))
hm: scala.collection.immutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002)
scala> hm+="工商"->"003"
scala> hm.+=(("工商1","004"))
scala> hm
res4: scala.collection.immutable.HashMap[String,String] = Map(工商 -> 003, 建设 -> 001, 招商 -> 002, 工商1 -> 004)
scala> hm.-("工商")
res6: scala.collection.immutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002, 工商1 -> 004)
scala> hm
res7: scala.collection.immutable.HashMap[String,String] = Map(工商 -> 003, 建设 -> 001, 招商 -> 002, 工商1 -> 004)
scala> hm.-=("工商")
scala> hm
res9: scala.collection.immutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002, 工商1 -> 004)
scala> import scala.collection.immutable.HashMap
import scala.collection.immutable.HashMap
scala> var hm=HashMap[String,String](("建设","001"),("招商","002"))
hm: scala.collection.immutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002)
scala> hm.get("招商").getOrElse("没有值")
res11: String = 002
scala> hm.get("招商1").getOrElse("没有值")
res12: String = 没有值
scala> hm
res16: scala.collection.immutable.HashMap[String,String] = Map(工商 -> 003, 建设 -> 001, 招商 -> 002, 工商1 -> 004)
scala> for(i<- hm) println(i._1+" -> "+i._2)
工商 -> 003
建设 -> 001
招商 -> 002
工商1 -> 004
scala> var hm=HashMap[String,String](("建设","001"),("招商","002"))
hm: scala.collection.immutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002)
scala> var newhm=HashMap[String,String](("邮政","004"))
newhm: scala.collection.immutable.HashMap[String,String] = Map(邮政 -> 004)
scala> var mergerFunction:((String,String),(String,String))=>(String,String) = (tuple1,tuple2)=>{
|
| if(tuple1._1.equals(tuple2._1)){
| (tuple1._1,tuple2._2)
| }else{
| tuple1
| }
| }
scala> var res=hm.merged(newhm)(mergerFunction)
res: scala.collection.immutable.HashMap[String,String] = Map(邮政 -> 004, 建设 -> 001, 招商 -> 002)
scala> res
res18: scala.collection.immutable.HashMap[String,String] = Map(邮政 -> 004, 建设 -> 001, 招商 -> 002)
scala> for(i<- res) println(i)
(邮政,004)
(建设,001)
(招商,002)
scala> var hm=HashMap[String,String](("建设","001"),("招商","002"))
hm: scala.collection.immutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002)
scala> hm.keys
res23: Iterable[String] = Set(建设, 招商)
scala> hm.values
res24: Iterable[String] = MapLike(001, 002)
remove/put
scala> import scala.collection.mutable.HashMap
import scala.collection.mutable.HashMap
scala> var hm=HashMap[String,String](("建设","001"),("招商","002"))
hm: scala.collection.mutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002
scala> hm+="工商"->"003"
res0: scala.collection.mutable.HashMap[String,String] = Map(工商 -> 003, 建设 -> 001, 招商 -> 002)
scala> hm-=("工商")
res1: scala.collection.mutable.HashMap[String,String] = Map(建设 -> 001, 招商 -> 002)
scala> hm.put("邮政","004")
res2: Option[String] = None
scala> hm.remove("工商")
res3: Option[String] = None
scala> for(i<- hm) println(i)
(建设,001)
(邮政,004)
(招商,002)