Scala---集合(list,set)详解

一、List

list集合有顺序,有索引,元素可重复

1、Nil 空列表
	val lst=Nil
    println(Nil)//List()
    //向左侧添加一个元素,::起到右连接的作用。
    val lst1=8::(4::(0::Nil))
    println(lst1)//List(8, 4, 0)
2、创建集合
//调用apply方法进行创建
    val list = List(1,2,4,5,9,5)
    println(list.isEmpty)
    //查看头部元素
    println(list.head)//1
    //查看尾部元素
    println(list.tail)//List(2, 4, 5, 9, 5)
    //查看最后一个元素
    println(list.last)//5
    //计算集合的和
    println(list.sum)//26

    //创建求和方法
    def sums(l:List[Int]):Int={
      if(l.isEmpty){
        0
      }else{
        l.head+sums(l.tail)
      }
    }
    sums(list)
3、增删查(不可改)
	val list = List(1,2,3,4)
    val list2 = List(5,6,7,3)
    //添加元素都添加到集合的左侧
    //添加元素第一种
    val list3=0::list
    println(list3)//List(0, 1, 2, 3, 4)
    //添加元素第二种
    val list4 = list2.::(4)
    println(list4)//List(4, 5, 6, 7, 3)
    //添加元素第三种
    val list5 = 8+:list2
    println(list5)//List(8, 5, 6, 7, 3)
    //添加元素第四种
    val list6 = list2.+:(5)
    println(list6)//List(5, 5, 6, 7, 3)
    //添加元素第五种,给尾部添加
    val list15 =list2.:+(7)
    println(list15)//List(5, 6, 7, 3, 7)

    //添加集合第一种
    val list7 = list:::list2
    println(list7)//List(1, 2, 3, 4, 5, 6, 7, 3)
    //添加集合第二种
    val list8 = list.:::(list2)
    println(list8)  //List(5, 6, 7, 3, 1, 2, 3, 4)
    //添加集合第三种
    val list11 = list++list2
    println(list11)//List(1, 2, 3, 4, 5, 6, 7, 3)
    //添加集合第四种
    val list16 = list.++(list2)
    println(list16)//List(1, 2, 3, 4, 5, 6, 7, 3)

    //整合两个集合为一个新的集合
    //union:整合两个集合中的元素为一个新的集合。新的集合包含两个集合中所有的元素
    val list12 = list.union(list2)
    println(list12)//List(1, 2, 3, 4, 5, 6, 7, 3)
    //针对集合中的元素进行去重
    val distinct = list12.distinct
    println(distinct)//List(1, 2, 3, 4, 5, 6, 7)

    //删除元素
    //drop会返回一个新的集合,原集合保持不变,n代表删除几个元素
    val list13 = list.drop(2)
    val list14 = list.dropRight(2)
    println(list13)//List(3, 4)
    println(list14)//List(1, 2)

    //查询元素,n是集合下标
    println(list(3))//4
4、集合的遍历
	val list = List(1,3.3,"hello",9)
    //第一种方式
    for(i<-list){
      println(i)
    }

    //第二种方式
    for(i<-0 to list.length-1){
      println(list(i))
    }

    //第三种方式
    list.foreach(println)
5、可变集合的使用
	val blist= ListBuffer[Int](1,2,3,4,9)
	//改
	blist(3)=0
    println(blist)//ListBuffer(1, 2, 3, 0, 9)
    //增加
    blist.append(5,8)
    println(blist)//ListBuffer(1, 2, 3, 0, 9, 5, 8)
    //排序
    println(blist.sorted)//ListBuffer(0, 1, 2, 3, 5, 8, 9)

二、Set

set集合无序,没有索引,元素不可重复

1、不可变集合
 	//不可变集合的创建
    val set = Set(1,2,3,5)
    println(set)//Set(1, 2, 3, 5)
    //添加元素
    var set1=set+9
    println(set1)//Set(5, 1, 9, 2, 3)
    //添加集合
    var set2=Set(3,4,5,6)
    var set3=set++set2
    println(set3)//Set(5, 1, 6, 2, 3, 4)
    //删除元素
    val set4 = set.drop(3)
    println(set4)//Set(5)
    //删除元素第二种
    val set5 = set.-(1,5)
    println(set5)//Set(2, 3)

    //创建不可变集合第二种
    val hashSet = new HashSet[Int]()
2、可变的set集合
	//要想创建可变的set集合,要导包,导包后,默认使用的就是可变集合
    import scala.collection.mutable
    import scala.collection.mutable.Set
    val set = Set(1,2,3,4)
    //添加元素
    set.add(5)
    println(set)//Set(1, 5, 2, 3, 4)
    //添加元素第二种
    set+=6
    println(set)//Set(1, 5, 2, 6, 3, 4)
    //添加多个元素
    set.+=(22,33,44)
    println(set)//Set(33, 1, 5, 2, 6, 3, 4, 22, 44)
    //添加集合
    var set1=Set(11,66)
    set++=set1
    println(set)//Set(33, 66, 1, 5, 2, 6, 3, 4, 22, 11, 44)
    //添加集合第二种方式
    var set2=Set(666)
    val set3 = set.union(set2)
    println(set3)//Set(33, 66, 1, 5, 2, 666, 6, 3, 4, 22, 11, 44)
    //删除元素
    set.remove(33)
    println(set)//Set(66, 1, 5, 2, 6, 3, 4, 22, 11, 44)
    //删除多个元素
    set.-=(66,1,2)
    println(set)//Set(5, 6, 3, 4, 22, 11, 44)

    //第二种创建方式
    val hashSet1 = new mutable.HashSet[Int]()
    hashSet1.add(2)
    println(hashSet1)//Set(2)
    hashSet1.+=(4)
    println(hashSet1)//Set(2, 4)
3、Set集合的遍历
	val set = Set(1,2,3,4,5,6,7)
	//第一种
    for(i<-set){
      println(i)
    }
    //第二种
    set.foreach(println)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值