Scala 入门2(数组、List、Set、Map、元组、Option、Iterator)

文章目录

    • 1. 数组
    • 2. List
    • 3. Set
    • 4. Map
    • 5. 元组
    • 6. Option
    • 7. 迭代器

学自 https://www.runoob.com/scala/scala-tutorial.html

1. 数组

  • 使用 () 来取索引处的元素
// 数组var z1 : Array[String] = new Array[String](3)var z2 = new Array[String](3) // 两种方式定义z1(0) = "michael"; z1(1) = "scala"; z1(2) = "!"for(z <- z1)println(z)var z3 = Array("hello","michael","!!!")for(z <- z3)println(z)// 求和,求最大var nums = Array(1.9, 2, -1, 0.1)var sum = 0.0; var maxv = -100000.0for(i <- 0 to (nums.length-1)){sum += nums(i)if(nums(i) > maxv)maxv = nums(i)}println(printf("sum: %f, maxv: %f",sum, maxv))// sum: 3.000000, maxv: 2.000000()// 多维数组import Array._val mat = Array.ofDim[Int](3,3)for(i <- 0 to 2; j <- 0 to 2)mat(i)(j) = i*3+j;for(i <- 0 to 2; j <- 0 to 2)print(mat(i)(j) + " ") // 0 1 2 3 4 5 6 7 8println()// 合并数组var nums2 = Array(1,2,3)var nums3 = Array(4,5,6,7)var allnums = concat(nums2, nums3)for(x <- allnums)print(x + " ") // 1 2 3 4 5 6 7println()var nums4 = range(5, 8)for(x <- nums4)print(x + " ") // 5 6 7println()var nums5 = range(5, 18, 2) // 左闭右开,间距 2for(x <- nums5)print(x + " ") // 5 7 9 11 13 15 17println()

2. List

		val site: List[String] = List("michael", "csdn","blog")val site1 = "michael" :: ("csdn" :: Nil)val empty: List[Nothing] = List()val empty1 = Nilval dim: List[List[Int]] = List(List(1, 0, 0),List(0, 1, 0),List(0, 0, 0, 1))val dim1 = (1::(0::(0::Nil)))::(0::(1::(0::Nil)))::(0::(0::(0::(1::Nil))))::Nilprintln(site.head) // michaelprintln(site.tail) // 除第一个元素之外的 List(csdn, blog)println(empty.isEmpty) // trueprintln(dim.isEmpty) // false// 列表连接// 方法1 ::: 运算var site0 = site ::: site1println(site0) // List(michael, csdn, blog, michael, csdn)// 方法2 List.:::() 方法, 注意连接的顺序site0 = site.:::(site1)println(site0) // List(michael, csdn, michael, csdn, blog)println(site) // List(michael, csdn, blog)// 方法3 使用 concat 方法site0 = List.concat(site, site1)println(site0) // List(michael, csdn, blog, michael, csdn)// List.fill() 填入重复数量的元素val site3 = List.fill(3)("michael") // 重复3次println(site3) // List(michael, michael, michael)// List.tabulate() 通过给定函数创建列表val squares = List.tabulate(6)(n => n*n+1)println(squares) // List(1, 2, 5, 10, 17, 26)// 二维val mul = List.tabulate(4,5)(_ * _)println(mul)// List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12))// List.reverse 反转println(squares.reverse) // List(26, 17, 10, 5, 2, 1)

3. Set

		// set没有重复,默认是不可变集合, 改变后,生成新的setval set = Set(1,2,3)println(set.getClass.getName) // scala.collection.immutable.Set$Set3println(set.exists(_%2 == 0)) // trueprintln(set.drop(1)) // Set(2, 3)println(set) // Set(1, 2, 3)// 可变集合import scala.collection.mutableval mutableSet = mutable.Set(1,2,3)println(mutableSet.getClass.getName) // scala.collection.mutable.HashSetprintln(mutableSet.add(4)) // trueprintln(mutableSet.remove(1)) // truemutableSet += 5mutableSet -= 2println(mutableSet) // Set(5, 3, 4)// .head  .tail  .isEmpty 跟 List 的含义一样// 连接集合 ++ or Set.++() ,会去重val s1 = Set("michael","ming")val s2 = Set("michael", "scala")var s0 = s1 ++ s2println(s0) // Set(michael, ming, scala)s0 = s1.++(s2)println(s0) // Set(michael, ming, scala)// 最值 Set.min, Set.maxval num = Set(1,2,3,4,5,6,-1)println(num.min, num.max) // (-1, 6)// 交集 Set.&  or  Set.intersectval num1 = Set(1,2,3,11,12)println(num.&(num1)) // Set(1, 2, 3)println(num.intersect(num1)) // Set(1, 2, 3)

4. Map

		// Map 默认不可变的 Map, 可变的要import scala.collection.mutable.Mapval colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")println(colors("red")) // #FF0000println("all keys: " + colors.keys) // all keys: Set(red, azure)println("all values: " + colors.values) // all values: MapLike(#FF0000, #F0FFFF)println("isEmpty ? : " + colors.isEmpty) // isEmpty ? : falseval num3 = Map()println(num3.isEmpty) // true// 合并 ++运算 or Map.++()val colors1 = Map("red" -> "#FF0000","azure" -> "#F0FFFF","peru" -> "#CD853F")println(colors ++ colors1) // Map(red -> #FF0000, azure -> #F0FFFF, peru -> #CD853F)println(colors.++(colors1)) // Map(red -> #FF0000, azure -> #F0FFFF, peru -> #CD853F)// 如果有 key 一样,value不一样,以后者的为准,请自行测试// 输出 keys, valuescolors.keys.foreach{i => print("key: " + i); println(" value: " + colors(i))} // key: red value: #FF0000// key: azure value: #F0FFFF// 指定key是否存在println(colors.contains("red")) // trueprintln(colors.contains("blue")) // false

5. 元组

		// 元组val t = (1, 3.14, "michael")println(t._1) // 1, 下标从1开始 ._idxt.productIterator.foreach{ // 遍历i => println("value: " + i)}// 元组转字符串println(t.toString()) // (1,3.14,michael)// 交换元素val t1 = (1,2)println(t1.swap) // (2,1) 长度只能为 2

6. Option

        // Option 表示一个值是可选的val myMap  = Map("k1" -> "v1")val v1 : Option[String] = myMap.get("k1")val v2 : Option[String] = myMap.get("k2")println(v1) // Some(v1)println(v2) // Nonedef show(x : Option[String]) = x match {case Some(s) => scase None => "?"}println(show(myMap.get("k1"))) // v1println(show(myMap.get("k2"))) // ?// getOrElse() 获取存在的元素或者使用默认值val a : Option[Int] = Some(5)val b : Option[Int] = Noneprintln(a.getOrElse(0)) // 5println(b.getOrElse(10)) // 不存在,取默认值10println(a.isEmpty) // falseprintln(b.isEmpty) // true

7. 迭代器

        // Iterator 访问集合的方法// it.next() 返回下一个元素,并更新迭代器// it.hasNext 是否还有元素val it = Iterator("baidu", "alibaba", "tencent")while(it.hasNext){println(it.next())}val it1 = Iterator(1,2,3,-1)val it2 = Iterator(1,2,3,-1)val it3 = Iterator(1,2,3,-1)println(it1.min) // -1println(it2.max) // 3, 需要分开写,不能写 it1.maxprintln(it1.size) // 0, 迭代器走到头了,剩余长度0println(it3.length) // 4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现非对称加密算法_Python3非对称加密算法RSA实例详解

本文实例讲述了Python3非对称加密算法RSA。分享给大家供大家参考&#xff0c;具体如下&#xff1a;python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥、私钥。其中 python3.6 Crypto 库的安装方式请参考前面一篇《Python3对称加密算法AES、DES3》rsa 加解密的库使用 pip3…

python画饼图_百度飞桨PaddlePaddle之[Python小白逆袭大神]7天训练营

第三次参加百度的7天训练营了这次参加的主题是【Python小白逆袭大神】&#xff0c;不过你别看是小白逆势。。。除非你一开始参加就逆袭完&#xff0c;不然你真的是python小白&#xff0c;这个课程还是有难难度的。说一下个训练营的特点版。这个营从python一些基础练习-->数据…

潍坊学院的计算机类怎么样,潍坊学院教育技术学专业怎么样?有知道的麻烦说下,谢谢!...

潍坊学院教育技术学专业怎么样&#xff1f;有知道的麻烦说下&#xff0c;谢谢&#xff01;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;潍坊学院教育技术学专业怎么样&#xff1f;有知道的…

elasticsearch配置文件详解

elasticsearch的config文件夹里面有两个配置文件&#xff1a;elasticsearch.yml和logging.yml&#xff0c;第一个是es的基本配置文件&#xff0c;第二个是日志配置文件&#xff0c;es也是使用log4j来记录日志的&#xff0c;所以logging.yml里的设置按普通log4j配置文件来设置就…

Scala 入门3(类、Trait、模式匹配、正则、异常、提取器、IO)

文章目录1. 类和对象2. Trait3. 模式匹配4. 正则5. 异常处理6. 提取器7. 文件 IO学自 https://www.runoob.com/scala/scala-tutorial.html 1. 类和对象 object myClass {import java.io._class Point(xc : Int, yc : Int){var x : Int xcvar y : Int ycdef move(dx:Int, dy…

The Power of Android Action Bars(转载)

转自&#xff1a;http://www.informit.com/articles/article.aspx?p1743642转载于:https://www.cnblogs.com/lance-ehf/p/4285239.html

计算机网络校园网简单设计与实现,简单校园网的设计与实现.docx

本科课程考查(论文)专用封面作业(论文)题目&#xff1a;所修课程名称&#xff1a;简单校园网的设计与实现 《计算机网络实践》修课程时间&#xff1a; 2012年 9月至 2012年 12月完成作业(论文)日期&#xff1a;2012年12月评阅成绩&#xff1a;评阅意见&#xff1a;评阅教师签名…

python面向对象继承

如果一个A类继承自另一个B类&#xff0c;就把这个A类称为B的子类&#xff0c;把B称为A的父类或者超类。继承可以使子类具有父类的各种属性和方法&#xff0c;而不再需要写相同的代码。在令子类继承父类的同时&#xff0c;可以重新定义某些属性和方法&#xff0c;使其获得与父类…

c++ class struct同名_C/C++面向对象编程之封装

点击“蓝字”关注我们吧前言&#xff1a;何为面向过程&#xff1a;面向过程&#xff0c;本质是“顺序&#xff0c;循环&#xff0c;分支” 面向过程开发&#xff0c;就像是总有人问你要后续的计划一样&#xff0c;下一步做什么&#xff0c;再下一步做什么&#xff0c;意外、事物…

LeetCode 1718. 构建字典序最大的可行序列(贪心+回溯)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;请你找到满足下面条件的一个序列&#xff1a; 整数 1 在序列中只出现一次。2 到 n 之间每个整数都恰好出现两次。对于每个 2 到 n 之间的整数 i &#xff0c;两个 i 之间出现的距离恰好为 i 。 序列里面两个数 a[…

collections求和方法_java集合求和最大值最小值示例分享

package com.happyelements.athene.game.util;import static com.google.common.base.Preconditions.checkNotNull;import java.util.Collection;import com.google.common.collect.Lists;/*** Math工具类** version 1.0* since 1.0*/public class MathUtil {/*** see MathUtil…

为什么要给计算机配置IP地址,更改ip地址 为何要重启电脑

在系统中&#xff0c;如果想修改计算机的IP地址&#xff0c;系统会提示重新启动计算机&#xff0c;有没有什么办法不重启机器又照样改IP呢&#xff1f; 首先按自己的需要改动IP地址&#xff0c;点击[确定] 按钮后&#xff0c;系统会出现重新启动计算机的提示。此时点击[否]&…

static函数

// 以下摘自网络 静态函数在函数的返回类型前加上关键字static&#xff0c;函数就被定义成为静态函数。函数的定义和声明默认情况下是extern的&#xff0c;但静态函数只是在声明他的文件当中可见&#xff0c;不能被其他文件所用。定义静态函数的好处&#xff1a;<1> 其他…

python中数据类型转换原理_python的可变与不可变数据类型的原理是什么呢?

Python中变量的进阶知识&#xff1a; 涉及到Python的对象知识。 即&#xff1a;可变对象和不可变对象。题目中的可变和不可变数据类型&#xff0c;表述不准确。 Python中&#xff0c;一切皆对象。 对象是一种抽象。抽象是什么&#xff1f;抽象就是一种概念上的简化。 《learnin…

python股票历史最低点_Python统计某一只股票每天的开盘,收盘,最高,最低价格!...

模块&#xff1a;Numpy码字不易&#xff0c;转载请注明出处&#xff01;十分感谢&#xff01;准备工作&#xff1a;抓取某一只股票的信息&#xff0c;每30min为一组数据&#xff0c;可以参考上一篇&#xff1a;Note: 只为演示如何统计&#xff0c;更精准的可以抓取每5min为一组…

操作系统是计算机的什么管理者,操作系统是计算机资源的管理者

由计算机提供的、因应用程序的存在和运行所消耗或占用的物质条件&#xff0c;叫做计算机的资 源&#xff0c;例如处理器的时间、内存空间、外部设各等。为了有效地利用计算机的各种资源&#xff0c;操作系统 必须为用户承担起对计算机资源的管理任务。例如&#xff0c;为了使应…

python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件

I am developing an API that allows outside clients to send a binary file which will be processed. my web.data() is a string and the function I am calling requires a binary. How do I get it into the correct format? Maybe I have the incorrect Headers? how …

LeetCode 1828. 统计一个圆中点的数目

文章目录1. 题目2. 解题1. 题目 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] &#xff0c;表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。 同时给你一个数组 queries &#xff0c;其中 queries[j] [xj, yj, rj] &#xff0c;表示一个圆心在…

elasticsearch threadpool

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-threadpool.html转载于:https://www.cnblogs.com/SamuelSun/p/4287218.html

python argument list too long_[已解决]Argument list too long如何处理?

Argument list too long 本质是需要处理的长度超过系统的长度&#xff0c;因此无法执行相关命令。经过搜索发现了两种方法&#xff0c;思想都是将参数切分成小的段落进行执行。法一&#xff1a;通过xargs传递参数 (数据量大了还是不太奏效)find . -name "*.log" | xa…