Scala—— 16.列表List

Scala中的List和Java List不一样,在Java中List是一个接口,真正存放数据的是ArrayList,而Scala的List可以直接存放数据,就是一个object,默认情况下Scala的List是不可变的,List属于序列Seq。
sealed abstract class List+A extends scala.collection.immutable.AbstractSeq[A]

1.List抽象类

List抽象类不能创建对象
var list1=new List
在默认情况下 List 是scala.collection.immutable.List,即不可变,在scala中,List就是不可变的,如需要使用可变的List,则使用ListBuffer, List 在 package object scala 做了 val List = scala.collection.immutable.List,val Nil = scala.collection.immutable.Nil // List(),list中可以放任何的数据类型,比如:arr1的类型为List[Any]。

2.List定义

scala> var a=List(1,2,4)
a: List[Int] = List(1, 2, 4)

scala> List.apply(1,3,3)
res12: List[Int] = List(1, 3, 3)

scala> List.range(1,100)
res15: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99)

3.::和:::的区别

::符号表示向集合中 新建集合添加元素
::: 运算符是将集合中的每一个元素加入到集合中去

scala> var list1=List(1,2,3,4)
list1: List[Int] = List(1, 2, 3, 4) 
scala> var list2=List('a','b','c')
list2: List[Char] = List(a, b, c)
scala>  var list3=List(5,6,7,8)
list3: List[Int] = List(5, 6, 7, 8)
scala>  var list4=List('d','e','d')
list4: List[Char] = List(d, e, d)
scala> var list3=list1 :: list2 
list3: List[Any] = List(List(1, 2, 3, 4), a, b, c)

scala> list3:::list4
res5: List[AnyVal] = List(5, 6, 7, 8, d, e, d)

4.List元素的追加

scala> a:+12
res29: List[Int] = List(1, 2, 4, 12)

scala> 13+:a
res31: List[Int] = List(13, 1, 2, 4)

5.ListBuffer

# 注意包名集合路径
scala> import scala.collection.mutable.ListBuffer
import scala.collection.mutable.ListBuffer

scala> ListBuffer(1,2,3)
res58: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)

scala> ListBuffer[Int](1,2,3)
res59: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)

  val lst0 = ListBuffer[Int](1, 2, 3)
 
    //如何访问
    println("lst0(2)=" + lst0(2)) // 输出 lst0(2)= 3
    for (item <- lst0) { // 遍历,是有序
      println("item=" + item)
    }
 
    //动态的增加元素,lst1就会变化, 增加一个一个的元素
    val lst1 = new ListBuffer[Int] //空的ListBuffer
    lst1 += 4 // lst1 (4)
    lst1.append(5) // list1(4,5)
 
    //
    lst0 ++= lst1 // lst0 (1, 2, 3,4,5)
 
    println("lst0=" + lst0)
 
 
    val lst2 = lst0 ++ lst1 // lst2(1, 2, 3,4,5,4,5)
    println("lst2=" + lst2)
 
    val lst3 = lst0 :+ 5 // lst0 不变 lst3(1, 2, 3,4,5,5)
    println("lst3=" + lst3)
 
 
    println("=====删除=======")
    println("lst1=" + lst1)
    lst1.remove(1) // 表示将下标为1的元素删除
    for (item <- lst1) {
      println("item=" + item) //4
    }
scala> var  lb1=ListBuffer(1,2,3)
lb1: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)

scala> var lb2=ListBuffer(4,5,6)
lb2: scala.collection.mutable.ListBuffer[Int] = ListBuffer(4, 5, 6)

scala> lb1++=lb2
res15: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 5, 6)

scala> lb1+=1
res16: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 5, 6, 1)

scala> lb1 :: lb2
           ^
       error: value :: is not a member of scala.collection.mutable.ListBuffer[Int]
       did you mean ++:, +=:, or :++?
scala> lb1+=4
res3: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4)

scala> lb1
res4: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4) 

scala> lb1.remove(2)
res7: Int = 3

scala> lb1
res8: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 4)

scala> for(i<-lb1) 
     | print(i)
124
scala> for(i<-lb1 if i<2) 
     | print(i)
1

————Blueicex 2020/2/16 18:55 blueice1980@126.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值