Scala深入浅出实战经典:5, Scala数组操作实战详解

视频下载地址:http://yunpan.cn/cmu9xQa6HRIRY 访问密码 2e0e
大数据微信公众账号:DT_Spark

/*
*定长数组
*/

   val s = Array("Hello","World")
   //> s  : Array[String] = Array(Hello, World)
   s(0)="GoleBye"
   s
   //> res0: Array[String] = Array(GoleBye, World)
   //int类型数组,是默认0
   val nums = new Array[Int](10)                  
   //> nums  : Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
   //string类型数组,默认是null
//> a  : Array[String] = Array(null, null, null, null, null, null, null, null, null, null)

/*
*可变数组
*/

import scala.collection.mutable.ArrayBuffer
    val b = ArrayBuffer[Int]()        
    //> b  : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
    //把1添加到b数组里
    b += 1                            
    //> res1: com.wy.scala.ScalaInAction.b.type = ArrayBuffer(1)
    //把数组1235添加到数组里
    b += (1,2,3,5)                    
    //> res2: com.wy.scala.ScalaInAction.b.type = ArrayBuffer(1, 1, 2, 3, 5)

    //把数组添加到b数组里
    b ++= Array(13,18,21)             
    //> res3: com.wy.scala.ScalaInAction.b.type = ArrayBuffer(1, 1, 2, 3, 5, 13, 18,21)
    b                                             
    //> res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 5,13, 18, 21)
    //去掉最后一个
    b.trimEnd(1)
    b                                             
    //> res5: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 5, 13, 18)
    //去掉第一个
    b.trimStart(1)
    b                                             
    //> res6: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 5, 13, 18)
    //在1位标下插入11111111
    b.insert(1,11111111)
    b                                             
    //> res7: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 11111111, 2, 3, 5, 13, 18)

    //在3的位标下插入3333333,4,4444444
    b.insert(3,33,4,44)
    b                                             
    //> res8: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 11111111, 2, 33, 4, 44, 3, 5, 13, 18)
    b.size                                        
    //> res9: Int = 10
    //删除索引为2的数据
    b.remove(2)                                   
    //> res10: Int = 2
    //> res11: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 11111111, 33, 4, 44, 3, 5, 13, 18)

    //删除索引为2的后面3位数据
    b.remove(2,3)
    b                                             
    //> res12: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 11111111, 3, 5, 13, 18)
    val c = b.toArray
    //c是不可变的
    c+=1 //错误

yield关键字

        val c = Array(2,3,5,7)            
        //> c  : Array[Int] = Array(2, 3, 5, 7)
        val result = for(elem <- c) yield elem *2
        //> result  : Array[Int] = Array(4, 6, 10, 14)
        for(elem <- c if elem % 2 == 0)yield elem * 2
        //> res14: Array[Int] = Array(4)

        //生产模式下一般这样写
        c.filter(_ %2 == 0).map(_*2)      
        //> res15: Array[Int] = Array(4)

求和

Array(1,2,3,4).sum                
//> res16: Int = 10

排序

        //不是按长度排,是按字母顺序
        val cc = ArrayBuffer("m","1","nittle","anglebaby").max
        //> cc  : String = nittle
        //cc
        ArrayBuffer("su","1","little","anglebaby").min
        //> res17: String = 1

        //排序
            val d = Array(1,7,3,9)                        
            //> d  : Array[Int] = Array(1, 7, 3, 9)
            //> res18: Array[Int] = Array(1, 3, 7, 9)
            //quick排序
            scala.util.Sorting.quickSort(d)
            d                                             
            //> res19: Array[Int] = Array(1, 3, 7, 9)

mkString

    //mkString方法可以串连数组或集合的元素
    d.mkString(" and ")                           
    //> res20: String = 1 and 3 and 7 and 9
    d.mkString("<",".",">")           
    //> res21: String = <1.3.7.9>

二维数组:

    //二维数组
    val ay = Array.ofDim[Double](3,4) 
    //> ay  : Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0.0, 0.0, 0.0))
    ay(2)(2) = 27.2
    ay                                
    //> res22: Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0.0, 27.2, 0.0))

   val x = new Array[Array[Int]](10)              
   //> x  : Array[Array[Int]] = Array(null, null, null, null, null, null, null, null, null, null)

   for(i <- 0 until x.length)
     x(i) = new Array[Int](i+1)

    x                                             
    //> res23: Array[Array[Int]] = Array(Array(0), Array(0, 0), Array(0, 0, 0), Array(0, 0, 0, 0), Array(0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0 , 0), Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0))

so easy …

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
├─第一阶段 │      源码+ppt.rar │      高并发编程第一阶段01讲、课程大纲及主要内容介绍.wmv │      高并发编程第一阶段02讲、简单介绍什么是线程.wmv │      高并发编程第一阶段03讲、创建并启动线程.mp4 │      高并发编程第一阶段04讲、线程生命周期以及start方法源码剖析.mp4 │      高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │      高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │      高并发编程第一阶段07讲、策略模式在Thread和Runnable中的应用分析.mp4 │      高并发编程第一阶段08讲、构造Thread对象你也许不知道的几件事.mp4 │      高并发编程第一阶段09讲、多线程与JVM内存结构的关系,虚拟机栈实验.mp4 │      高并发编程第一阶段10讲、Thread构造函数StackSize详细讲解.mp4 │      高并发编程第一阶段11讲、Thread构造函数StackSize详细讲解-续.mp4 │      高并发编程第一阶段12讲、Daemon线程的创建以及使用场景分析.mp4 │      高并发编程第一阶段13讲、线程ID,优先级讲解.mp4 │      高并发编程第一阶段14讲、Thread的join方法详细介绍,结合一个典型案例.mp4 │      高并发编程第一阶段15讲、Thread中断Interrupt方法详细讲解.mp4 │      高并发编程第一阶段16讲、采用优雅的方式结束线程生命周期.mp4 │      高并发编程第一阶段17讲、Thread API综合实战,编写ThreadService实现暴力结束线程的综合实战.mp4 │      高并发编程第一阶段18讲、数据同步的引入与Synchronized的简单介绍.mp4 │      高并发编程第一阶段19讲、结合jconsole,jstack以及汇编指令认识synchronized关键字.mp4 │      高并发编程第一阶段20讲、同步代码块以及同步方法之间的区别和关系.mp4 │      高并发编程第一阶段21讲、通过实验分析This锁的存在.mp4 │      高并发编程第一阶段22讲、通过实验分析Class锁的存在.mp4 │      高并发编程第一阶段23讲、多线程死锁分析,案例介绍.mp4 │      高并发编程第一阶段24讲、线程间通信快速入门,使用wait和notify进行线程间的数据通信.mp4 │      高并发编程第一阶段25讲、多Produce多Consume之间的通讯导致出现程序假死的原因分析.mp4 │      高并发编程第一阶段26讲、多线程下的生产者消费者模型,以及详细介绍notifyAll方法.mp4 │      高并发编程第一阶段27讲、wait和sleep的本质区别是什么,深入分析(面试常见问题).mp4 │      高并发编程第一阶段28讲、线程生产者消费者的综合实战结合Java8语法.mp4 │      高并发编程第一阶段29讲、如何实现一个自己的显式锁Lock精讲上.mp4 │      高并发编程第一阶段30讲、如何实现一个自己的显式锁Lock精讲下(让锁具备超时功能).mp4 │      高并发编程第一阶段31讲、如何给你的应用程序注入钩子程序,Linux下演示.mp4 │      高并发编程第一阶段32讲、如何捕获线程运行期间的异常.mp4 │      高并发编程第一阶段33讲、ThreadGroup API介绍之一.mp4 │      高并发编程第一阶段34讲、ThreadGroup API介绍之二.mp4 │      高并发编程第一阶段35讲、线程池原理与自定义线程池.mp4 │      高并发编程第一阶段36讲、自定义个简单的线程池并且测试.mp4 │      高并发编程第一阶段37讲、给线程池增加拒绝策略以及停止方法.mp4 │      高并发编程第一阶段38讲、给线程池增加自动扩充线程数量,以及闲时自动回收的功能.mp4 │      高并发编程第一阶段39讲、课程结束,内容回顾,下季内容预告.mp4 │ ├─第二阶段 │       Java并发编程.png │       ppt+源码.rar │       高并发编程第二阶段01讲、课程大纲及主要内容介绍.wmv │       高并发编程第二阶段02讲、介绍四种Singleton方式的优缺点在多线程情况下.wmv │       高并发编程第二阶段03讲、介绍三种高效优雅的Singleto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

撸依天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值