scala学习总结6([Array/ArrayBuffer]、[Tuple]、[List/ListBuffer])

  • 定长数组:

    • 声明方式一:val arr = new Array[Int](10)
    • 声明方式二:var arr02 = Array(1, 3, "xxx")//apply方法创建数组对象
  • 变长数组:

    • 代码实例:
    val arr = new ArrayBuffer[Any](1,2,"Curry")  //定义
    println(arr(0))
    println(arr.length)
    for(i <- arr)  println(i)
    arr.append(4,5.0) //追加
    arr.remove(0) //删除		
    
    • 小结:
      ①ArrayBuffer是变长数组,类似于Java中的ArrayList
      val arr = new ArrayBuffer[Int]()//使用apply方法创建的对象
      ③关于append:def append(elems: A*) { appendAll(elems) } //接收的是可变参数.
      arr每append一次,arr在底层会重新分配内存进行扩容,arr的内存地址会 变化,产生新的ArrayBuffer
  • 定长数组与变长数组相互转换:

    • arr1.toBuffer //定长数组转变长数组
    • arr2.toArray //变长数组转定长数组
    • 说明:arr1调用toBuffer方法并没有改变其本身的值,arr2同理;
  • 多维数组的定义和使用:

    • 定义:val arr = Array.ofDim[Any](3)(4)
    • 赋值:arr(1)(1) = 1
    • 遍历:
    for(item <- arr){
        for(i <- item)	
        	print(i+"\t")
        println() 
    }
    
  • Scala数组和Java的List互转
    代码示例:

//Scala变长数组 ==> List集合
val arr = ArrayBuffer("1", "2", "3")
import scala.collection.JavaConversions.bufferAsJavaList
val javaArr = new ProcessBuilder(arr) 
val JavaList = javaArr.command()
println(javaList) //输出 [1, 2, 3]
import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable
// java.util.List ==> Buffer
val scalaArr: mutable.Buffer[String] = javaList
scalaArr.append("Curry")
println(scalaArr)
  • 元组Tuple

    • 基本介绍:元组可以理解为一个容器,可以存放多个相同或不同数据类型的元素;元组最多只能放入22个元素
    • 创建元组:val tuple = (1,3,"Curry") //tuple类型为Tuple_3
      (元组从Tuple_1到Tuple1_22有22个类型)
    • 访问元组数据:
      println(tuple._1)
      println(t1.productElement(0)) //访问第一个元素
    • 遍历:Tuple是一个整体,需要用迭代器遍历
    val t = (1,2,3,"Curry","nb")
    for(i <- t.productIterator)
        println(i)
    
  • 列表之List

    • 基本介绍:Scala中的List不同于Java的List,Scala的List是一个object,可以直接存放数据,默认情况下,List是不可变的,属于Seq;
    • 创建List:val list1 = List(1,2,3) //val list2 = Nil(空List)
    • 访问List:val a = list1(0)
    • List增加元素:向列表中追加元素,会返回新的List对象,原来List不变;
      示例:
    val list1 = List(1,2,3,"Curry")
    
    val list2 = list1:+4 //在List的末尾增加元素	
    println(list2) //输出List(1,2,3,"Curry",4)
    
    val lsit3 = 4+:list1 //在List最前面增加元素
    println(list3) //输出List(4,1,2,3,"Curry")
    
    val list4 = 4::5::6::list1::Nil 
    println(list4) //输出List(4, 5, 6, List(1, 2, 3, Curry))
    
    val list5 = 4::5::6::list1:::Nil //等价于4::5::6::list1
    println(list5) //输出List(4, 5, 6, 1, 2, 3, Curry) 
    
      //注意:
      1 ::表示向集合中添加元素
      2 :::表示将其左边的集合中每一个元素添加到其右边的集合中
      3 而且:::左右边必须是集合
      4 运算时,集合一定要放在最右边
    
  • 列表之ListBuffer

    • 代码示例:
object TestListBuffer {
  def main(args:Array[String])={
    val listBuffer = ListBuffer[Int](1,2,3)
    println(listBuffer) //输出 ListBuffer(1, 2, 3)

    val listBuffer2 = new ListBuffer[Int]
    listBuffer2 += 4
    listBuffer2.append(5)
    println(listBuffer2) //输出 ListBuffer(4, 5)

    listBuffer ++= listBuffer2
    println(listBuffer) //输出 ListBuffer(1, 2, 3, 4, 5)

    val a = listBuffer ++ listBuffer2
    println(a) //输出 ListBuffer(1, 2, 3, 4, 5, 4, 5)

    val b = listBuffer :+ 6
    println(b) //输出 ListBuffer(1, 2, 3, 4, 5, 6)

    listBuffer.remove(0)
    println(listBuffer) //输出 ListBuffer(2, 3, 4, 5)

  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值