【Scala】基本数据结构(数组、列表、元组、集、映射、迭代器) |
您所在的位置:网站首页 › scala中可变列表添加数据的方法有哪些 › 【Scala】基本数据结构(数组、列表、元组、集、映射、迭代器) |
文章目录
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.sum2、最值 ab.max ab.min3、排序 //从小到大 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).get2、直接获取 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 |