大数据学习——scala数组

package com

import scala.collection.mutable.ArrayBuffer

/**
  * Created by Administrator on 2019/4/8.
  */
object TestMap {

  def main(args: Array[String]) {

    //**定长数组和变长数组*************************************************
    //数组常用方法

    val arr = Array(1, 2, 3, 4, 5);

    val a1 = arr.map(_ * 10)
    val a2 = arr.filter(_ % 2 != 0)
    println(a2.toBuffer)

    //排序
    val arr1 = Array(1, 4, 8, 3, 2, 6, 9, 5)
    //升序
    println(arr1.sorted.toBuffer)
    //降序
    println(arr1.sorted.reverse.toBuffer)
    //升序
    println(arr1.sortWith((x, y) => x < y).toBuffer)
    //降序
    println(arr1.sortWith((x, y) => x > y).toBuffer)



    //注意:如果new,相当于调用了数组的apply方法,直接为数组赋值
    //初始化一个长度为1的定长数组
    val arr2 = Array[Int](10)
    println(arr2.toBuffer)


    //定义一个长度为3的定长数组
    val arr3 = Array("hadoop", "storm", "spark")
    //使用()来访问元素
    println(arr3(0))

    //变长数组(数组缓冲)
    //如果想使用数组缓冲,需要导入scala.collection.mutable.ArrayBuffer包
    var ab = ArrayBuffer[Int]()
    //向数组缓冲的尾部追加一个元素
    //+=尾部追加元素
    ab += 1
    //追加多个元素
    ab +=(2, 3, 4, 5)
    //追加一个数组++=
    ab ++= Array(6, 7)
    //追加一个数组缓冲
    ab ++= ArrayBuffer(8, 9)

    //打印数组缓冲ab
    println(ab)

    //在数组某个位置插入元素用insert
    ab.insert(0, -1, 0) //在首位插入-1,0两个元素
    println(ab)
    //删除数组某个位置的元素用remove
    ab.remove(8, 2) //从第9位开始删除两个元素
    println(ab)

    //**遍历数组**************************************
    //初始化一个数组
    val arr4 = Array(1, 2, 3, 4, 5, 6, 7, 8)
    //增强for循环
    for (i <- arr4)
      println("---" + i)

    //好用的until会生成一个Range
    //reverse是将前面生成的Range反转
    for (i <- (0 until arr4.length).reverse)
      println(arr4(i))


    //**数组转换**************************************
    //yield关键字将原始的数组进行转换会产生一个新的数组,原始的数组不变

    val arr5 = for (e <- arr4) yield e * 2
    println(arr5.toBuffer)
    val arr6 = arr4.map(_ * 3)
    println(arr6.toBuffer)

    //数组常用算法

    println(arr5.sum)
    println(arr5.max)
    println(arr5.sorted.toBuffer)
  }


}

 

posted on 2019-05-31 16:35  o_0的园子  阅读(363)  评论(0编辑  收藏  举报