Scala 数组集合

Scala 常用数组集合简单总结

数组

Array-数组

//伴⽣对象创建数组
var a1=Array(1,2,3,5,4)
//创建⻓度为5的数组,所有值都是0
var a2=new Array[Int](5)
//获取⻓度
a1.length
a2.size
//修改
a1(1) = -1
a1.update(1,-2)
//遍历数组
for(i<- a1) println(i)

Range-区间

产生的是一个只读区间和数组类似,但是内容不可以修改。

//创建区间
var r1=new Range(0,10,3) //0 3 6 9
var r2=0.to(10).by(3)
var r3=0 until 10 by 3
//取值
r1(2) // 6
//r1(2) = 12 //错误
//遍历range
for(i<- r1) println(i)
//⻓度⼤⼩
r1.size
r1.length

Vector-坐标

//创建向量
var v1= Vector(1,2,3)
var v2= for(i <- 0 to 10 by 3) yield i
//取值
v1(0) //1
//不⽀持修改
//v1(2) = 12 //错误
//遍历Vector
for(i<- v1) println(i)
//⻓度⼤⼩
v1.size
v1.length

Iterator -游标

不可以根据下标读取,且只能遍历一次。

//创建⼀个游标
var it=Iterator(1,2,3)
//只可以被遍历⼀次
for(i<- it) println(i)
//计算⼤⼩.将集合清空
it.size
it.length
//判断是否为空
val flag= it.isEmpty

集合

List-不可变集合

//创建集合
var list=List(1,2,5,3,2)

//添加元素 产⽣新的集合数组,不会修改原始集合
list.::(10)
list.+:(11)

//追加新的集合元素 产⽣新的集合数组,不会修改原始集合
list.:::(List(7,8,9))

//删除n个元素 产⽣新的集合数组,不会修改原始集合
list.drop(3) //List(3, 2)
list.dropRight(3) //List(1, 2)

//删除符合条件的元素,匹配⼀个⽴即终⽌
list.dropWhile(item=> item < 5) // List(5, 3, 2)

//选择⼀个⼦集 从0开始到4不包含4 产⽣新的集合数组,不会修改原始集合
list.slice(0,4)

//前后翻转集合 产⽣新的集合数组,不会修改原始集合
list.reverse // List(2, 3, 5, 2, 1)

//去除重复 产⽣新的集合数组,不会修改原始集合
list.distinct // List(1, 2, 5, 3)

//获取前n个元素 产⽣新的集合数组,不会修改原始集合
list.take(3) //List(1, 2, 5)
list.takeRight(3) //List(5, 3, 2)

//⼀直拿,直到第⼀个不满⾜条件终⽌ 产⽣新的集合数组,不会修改原始集合
list.takeWhile(item => item < 5 ) //List(1, 2)

//获取第⼀个元素、最后⼀个元素、除第⼀个以外的所有元素
list.head
list.last
list.tail

//获取数组⼤⼩
list.size
list.length

//获取数组指定位置的元素
list(2) // 5

ListBuffer-可变集合

//创建集合
var list=ListBuffer(1,2,5,3,2)

//添加元素 产⽣新的集合数组,不会修改原始集合
list.+:(11) //ListBuffer(1, 2, 5, 3, 2, 11)

//添加元素 产⽣新的集合数组,修改原始集合
list.+=(-1) // ListBuffer(1, 2, 5, 3, 2, -1)
list.+=:(-2) // ListBuffer(-2,1, 2, 5, 3, 2, -1)

//追加新的集合元素 产⽣新的集合数组,修改原始集合
list.++=(List(7,8,9)) // ListBuffer(1, 2, 5, 3, 2, 7, 8, 9)
list.++=:(List(7,8,9))// ListBuffer(7, 8, 9, 1, 2, 5, 3, 2, 7, 8, 9)

//删除n个元素 产⽣新的集合数组,不会修改原始集合
list.drop(3) //List(3, 2)
list.dropRight(3) //List(1, 2)

//删除符合条件的元素,匹配⼀个⽴即终⽌
list.dropWhile(item=> item < 5) // List(5, 3, 2)

//选择⼀个⼦集 从0开始到4不包含4 产⽣新的集合数组,不会修改原始集合
list.slice(0,4)

//前后翻转集合 产⽣新的集合数组,不会修改原始集合
list.reverse // List(2, 3, 5, 2, 1)

//去除重复 产⽣新的集合数组,不会修改原始集合
list.distinct // List(1, 2, 5, 3)

//获取前n个元素 产⽣新的集合数组,不会修改原始集合
list.take(3) //List(1, 2, 5)
list.takeRight(3) //List(5, 3, 2)

//⼀直拿,直到第⼀个不满⾜条件终⽌ 产⽣新的集合数组,不会修改原始集合
list.takeWhile(item => item < 5 ) //List(1, 2)

//获取第⼀个元素、最后⼀个元素、除第⼀个以外的所有元素
list.head
list.last
list.tail

//获取数组⼤⼩
list.size
list.length

//获取数组指定位置的元素
list(2) // 5

//修改指定位置
list(2) = 12 // ListBuffer(1, 2, 12, 3, 2)
list.update(2,5) //ListBuffer(1, 2, 5, 3, 2)

//删除某个元素 修改原始集合
list.-=(1) // ListBuffer(2, 5, 3, 2)

//删除指定位置元素 修改原始集合
var item=list.remove(2)

//从指定位置 插⼊元素 修改原始集合
list.insert(0,-1,-2) //从0位置插⼊ -1,-2
list.insertAll(0,List(0,0))

Set-不可变

//创建集合 去重
var s=Set[Int](1,2,4,5,3)

//添加⼀个元素 产⽣新的集合Set,不会修改原始集合
s.+(6) //Set(5, 1, 6, 2, 3, 4)

//删除元素 产⽣新的集合Set,不会修改原始集合
s.-(5) // Set(1, 2, 3, 4)

//获取set⼤⼩
s.size

//添加⼀个集合 产⽣新的集合Set,不会修改原始集合
s.++(List(6,6,7)) //Set(5, 1, 6, 2, 7, 3, 4)

//判断元素是否存在
var isExists=s(5) //true
isExists=s(7) //false

Set-可变

import scala.collection.mutable.Set
//创建集合 去重
var s=Set[Int](1,2,4,5,3)

//添加⼀个元素 产⽣新的集合Set,不会修改原始集合
s.+(6) //Set(5, 1, 6, 2, 3, 4)

//添加⼀个元素 产⽣新的集合Set,修改原始集合
s.add(6) //Set(5, 1, 6, 2, 3, 4)

//删除元素 产⽣新的集合Set,不会修改原始集合
s.-(5) // Set(1, 2, 3, 4)

//删除元素 产⽣新的集合Set,修改原始集合
s.remove(5) //Set(1, 2, 3, 4)

//获取set⼤⼩
s.size

//添加⼀个集合 产⽣新的集合Set,不会修改原始集合
s.++(List(6,6,7)) //Set(5, 1, 6, 2, 7, 3, 4)

//判断元素是否存在
var isExists=s(5) //true
isExists=s(7) //false

HashMap-不可变

import scala.collection.immutable.HashMap
var hm= HashMap[String,String](("建设","001"),("招商","002"))
//添加⼀个元素,并不会修改原始的Map
hm.+(("农业","003"))
hm.+("⺠⽣"->"004")

//删除元数据,并不会修改原始的Map
hm.-("建设","招商")

//获取指定key的值
val value: Option[String] = hm.get("建设")
val sv1= value.get //该值必须存在
val sv2= value.getOrElse("啥也没有" )

//判断key是否存在
hm.contains("建设")

//更新⼀个key,并不会修改原始的Map
hm.updated("建设","003")

//获取所有keys
val keys = hm.keys
val values = hm.values

//遍历⼀个Map
for(i<- hm.keys){
 println(i+" "+hm.get(i).getOrElse(""))
}

//合并两个map
var hm2=HashMap[String,String]("⼯商"->"003",("建设","005"))

//在key出现重复的时候,使⽤t2覆盖t1的元素
hm.merged(hm2)((t1,t2)=> t2)

HashMap-可变

import scala.collection.mutable.HashMap
var hm=HashMap[String,String](("建设","001"),("招商","002"))
//添加⼀个元素,并不会修改原始的Map
hm.+(("农业","003"))
hm.+("⺠⽣"->"004")

//添加⼀个元素,修改原始的Map
hm.put("⼯商","005")

//删除元数据,并不会修改原始的Map
hm.-("建设","招商")

//删除元数据,修改原始的Map
hm.remove("建设")

//获取指定key的值
val value: Option[String] = hm.get("建设")
val sv1= value.get //该值必须存在
val sv2= value.getOrElse("啥也没有")

//判断key是否存在
hm.contains("建设")

//更新⼀个key,并不会修改原始的Map
hm.updated("建设","003")

//获取所有keys
val keys = hm.keys
val values = hm.values

//遍历⼀个Map
for(i<- hm.keys){
 println(i+" "+hm.get(i).getOrElse(""))
}

Java集合和Scala集合相互转换

import scala.collection.JavaConverters._
object TestJavaScalaCollection {
 	def main(args: Array[String]): Unit = {
	val arrayList = new util.ArrayList[String]()
 	arrayList.add("hello")
 	arrayList.add("word")
 	for(i <- 0 until arrayList.size()){
 		println(arrayList.get(i))
 	}
	val scalaList = arrayList.asScala
 	for(i<- scalaList){
 		println(i)
 	}
 	val javaList = scalaList.asJava
 	for(i <- 0 until javaList.size()){
 		println(javaList.get(i))
 	}
 	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小七_七七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值