大数据学习之Scala数组和集合学习38
六:scala数组
1 数组定义:
数组定义1: var arr = new Array[String](3)
String:存储的元素类型
3:存储3个元素
添加元素: arr(1) = "dawn"
数组定义2: val arr1 = Array[Int](1,2,3,4,5,6)
改变内容:arr1(1) = 20
添加元素:arr1 += 18 长度不可以改变
2长度可变的数组
创建长度可变数组:
val ab = scala.collection.mutable.ArrayBuffer(2,3,4)
长度可变:
ab += 440
3 数组方法
-》map(映射)
映射: 1 2 3 4 5
映射关系:f(x) = x*2
对应映射关系:2 4 6 8 10
-》flatten
扁平化操作
这里a1经过map之后res23就是 一个数组中有2个数组元素的数组
然后再进行扁平操作。将这2个数组合并成一个。并将其打散!!
-》flatMap
相当于先map操作再flatten
-》foreach
遍历数组中的元素
-》GroupBy
分组
通过上面的一些数组方法可以进行的Scala单词计数,
将上一步groupBy的结果Map集合的每一个元素进行遍历处理,haha -> Array(haha), dawn -> Array(dawn, dawn), hello -> Array(hello, hello), best -> Array(best) 处理每一个元素,
key值保持不变,value进行计数,输出结果为key,value.length
-》sortBy
排序
这里对上面结果进行排序。由于单词计数之后结果是Map集合,Map集合不能进行排序,需要先转化成List才可以排序,再使用sortBy
默认是正序
逆序加一个负号
七:scala集合
1 可变集合
scala集合有两种类型:
可变mutable
不可变Immutable
val b = List(2,4,6)
不可变集合:内容不可变(数组内容可变改)
长度不可变(默认)
可变集合:
注意:需要导包
import scala.collection.mutable._
val buff = ArrayBuffer(2,3,4)
内容可变:buff(1) = 300
长度可变:buff += 200
2不可变集合
可以出了默认的方法以外,还可以调用不可用集合。
import scala.collection.immutable._
3 集合的基本操作
在scala中列表为空表示(Nil表示空列表)
head:取头元素
tail:取尾元素(除了头全是尾)
5::a a列表的头加入一个元素11
11::12::13::Nil 空列表前加入三个元素11,12,13
+ 字符串的拼接
++ 两个集合相加
++: 合并集合
.+: 头部追加元素
:+ 尾部追加元素
::: 两个集合相加
原文地址:https://www.cnblogs.com/hidamowang/p/11010457.html
- HDUOJ----1166敌兵布阵(线段树单点更新)
- poj----2155 Matrix(二维树状数组第二类)
- poj------2352 Stars(树状数组)
- HDUOJ-----2852 KiKi's K-Number(树状数组+二分)
- nyoj----522 Interval (简单树状数组)
- HDUOJ-----2838Cow Sorting(组合树状数组)
- HDUOJ---2642Stars(二维树状数组)
- HDUOJ -----Color the ball
- poj-----Ultra-QuickSort(离散化+树状数组)
- HDUOJ---1241Oil Deposits(dfs)
- HDUOJ------2398Savings Account
- HDUOJ-----2399GPA
- HDUOJ----旋转的二进制
- HDUOJ---3743Frosh Week(BIT+离散化)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【避坑指南】12.2 新功能优化器统计顾问(Optimizer Statistics Advisor)及常见问题和解决方法
- 初试 Open Service Mesh(OSM)
- K8S 生态周报| runc v1.0-rc92 发布
- 聊聊 Python 面试最常被问到的几种设计模式(上)
- 推荐一套个人文档管理系统。
- OpenCV图像读取(imread) 显示(imshow) 保存(imwrite)的冷知识点
- CodeReview实践-Gerrit自动触发JenkinsCI
- OpenCV常用图像拼接方法(一) :直接拼接
- ClickHouse|MergeTree引擎之数据分区
- OpenCV常用图像拼接方法(二) :基于模板匹配拼接
- 为了解决 Prometheus 大内存问题,我竟然强行将 Prometheus Operator 给肢解了。。
- 面试官:webpack原理都不会?
- 算法篇:树之对称二叉树
- 算法篇:树之二叉树的恢复
- 算法篇:树之利用数组处理链表