【Scala】基本数据结构(数组、列表、元组、集、映射、迭代器)

您所在的位置:网站首页 scala中可变列表添加数据的方法有哪些 【Scala】基本数据结构(数组、列表、元组、集、映射、迭代器)

【Scala】基本数据结构(数组、列表、元组、集、映射、迭代器)

#【Scala】基本数据结构(数组、列表、元组、集、映射、迭代器)| 来源: 网络整理| 查看: 265

文章目录 1 数组(Array)1.1 创建数组1.2 获取索引的值1.3 修改指定索引的值1.4 判断元素是否存在1.5 长度1.6 遍历 2 可变数组(ArrayBuffer)2.1 创建2.2 增加元素2.3 获取指定索引的元素2.4 修改指定索引的元素2.5 删除指定2.6 判断2.7 长度2.8 定长数组和可变数组之间的转换2.9 遍历2.10 求和、最值、排序 3 映射(map)3.1 不可变Map3.1.1 获取值3.1.2 修改 增加3.2 可变Map3.2.1 添加元素3.2.2 遍历 4 元组(Tuple)4.1 构建4.2 获取值4.3 遍历 5 zip拉链操作6 列表(List)6.1 创建6.2 获取6.3 增加元素6.5 删除6.6 union6.7 intersect6.8 diff6.9 take 7 集合(set)7.1 有序的集合7.2 基于自定义数据构建有序的集合 8 迭代器(Iterator)

1 数组(Array) 1.1 创建数组

1、new一个数组,指定长度和数据类型

val array = new Array[Int](3)

2、使用数组Array的伴生对象创建

val array = Array[String]("hello","world") 1.2 获取索引的值 array(1) 1.3 修改指定索引的值 array(1) = "abc" 1.4 判断元素是否存在 array.contains("hello") 1.5 长度 array.size array.length 1.6 遍历 for(a }

for-each函数

array.foreach(num => println(num)) 2.10 求和、最值、排序

1、求和

ab.sum

2、最值

ab.max ab.min

3、排序

//从小到大 ab.sorted //从大到小 ab.sortWith((v1,v2) => v1 > v2) 3 映射(map)

Map是一个对偶,映射的k-v键值对的集合,k不重复

Scala中有可变Map和不可变Map

3.1 不可变Map

构造出一个不可变Map[String,Int],其值不可变

val p = Map[String,Int]( "Alice" -> 20, "job" -> 20 ) 3.1.1 获取值

1、p.get(key)如果有则输出,没有则返回none

val key = "job" val age = p.get(key).get

2、直接获取

val age = p(key) 3.1.2 修改 增加 p("job")=20 //删除返回一个新集合,原集合不变 p.drop(1) 3.2 可变Map val p = scala.collection.mutable.Map[String,Int]( "Alice" -> 20, "job" -> 20 ) 3.2.1 添加元素 //添加 map("a")=14 //修改 map("job")=22 //添加 map.put("b",20) //删除前两个元素,原集合不变 map.drop(2) 3.2.2 遍历 for((k,v) println(kv.1) println(kv.2) } map.foreach(kv=>{ println(kv.1) println(kv.2) }) 4 元组(Tuple)

映射是键/值对偶的集合,对偶是元组的最简单形态,元组是不同类型的值的聚集。元组的值是通过将单个的值包含在圆括号里构成的。例如:(1,3.14,“abc”)是一个元组

注意:元组的各组元从1开始

4.1 构建

1、第一种

val tuple = new Tuple2[String,Int]("zhang",13)

2、第二种

val tuple2 = ("zhang",13)

3、第三种

val (a,b,c,d) = ("a1","b1","c1","d1") println((a,b,c)) //输出a1、b1、c1 4.2 获取值 val tuple = ("zhang",13) val name = tuple._1 val age = tuple._2 4.3 遍历 for(t val p = pc._1 val c = pc._2 println(p) println(c) }

2、a.zipAll(b,"a","b")

对没有匹配上的值自动进行填充,第一个(a)和第二个集合中多余的元素进行配对

val p = Array("山东","河南") val c = Array("济南","郑州") val pcs = p.zipAll(c,"a","b") for(pc //定义比较规则:先按照年龄升序排序,后年龄,后身高 override def compare(that:Person){ var ret = this.age.compareTo(that.age) if(ret == 0){ ret = that.height.compareTo(this.height) } ret } }

2、为容器提供比较器(实现特质Ordering)

val person = SortedSet()(new Ordering[Person](){ override def compare(that:Person){ var ret = this.age.compareTo(that.age) if(ret == 0){ ret = that.height.compareTo(this.height) } ret } }) 8 迭代器(Iterator)

迭代器包含两个基本操作:next和hasNext。next可以返回迭代器的下一个元素,hasNext用于检测是否还有下一个元素。

1、while循环

val iter = Iterator("Hadoop","Spark","Scala") while (iter.hasNext) { println(iter.next()) }

2、for循环

val iter = Iterator("Hadoop","Spark","Scala") for (elem


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3