Scala的集合框架
1.元组
定义方式:val tp=("nana',1,1.1)
特点:集合中的数据可以是不同类型的
最多只能放22个元素
取值:通过角标取值,这里的角标是从1开始的,元组名称._角标 tp._1 ("nana")
当出现数组长度不相同时,报错
对偶元组:val tp=("nana",1) 两个元素
拉链操作: zip

当出现数组长度不想同时,一一匹配,无则不匹配
2.数组
数组分为:不可变数组:长度不变,内容可变Array
可变数组:长度内容都可以改变 ArrayBuffer
不可变数组
定义:
val array1=Array(1,3,5,7)
val array2=new Array[Int](5) 初始值都为0,需要指定长度
取值:通过角标,从1开始 array1(1) []指泛型
赋值:
array1(0)=333 赋值是从0开始的
可变数组
导包jar import scala.collection.mutable.ArrayBuffer
定义
val array3=ArrayBuffer(11,22,33,44)
val array4=new ArrayBuffer[Int](5)
取值、赋值和不可变数组一样
可变数组的运算符号
+= 添加单个值 array3+=2222
++= 添加数组 array3++=array4
-= 删除单个值 array3-=44
--= 删除多个值 array3--=array1
数组的常用方法
数组的反转:reverse array3.reverse
数组的截取:slice(from,until) array3.slice(1,2) 左闭右开
数组的去重:distinct array3.distinct
3.List
不可变的 List 长度,内容都是不可以改变的
可变的 ListBuffer 长度,内容都是可变的
创建不可变的List
val list1=List[int](1,2,44,55)
构建List的另一种方法 ::Nil
8::9::44::Nil Nil空列表
::该方法被称为cons,以为构造,向队列的头部追加数据,创建新的列表,用法为x::list,其中x为加入头部的元素,无论x是列表与否,他都只将成为新生成列表的第一个元素
添加元素
:+在尾部追加元素 list1 :+1
+:在头部追加元素(:要朝向集合) 1+:list1
++ 该方法用于连接两个集合 list1++list2
:::只能用于链接两个List类型的集合
对于不可变类型集合的操作,生成了一个新的集合,元集合并没有被改变
可变的List
导包jar import scala.collection.mutable.ListBuffer
val list1=ListBuffer(11,22,34,55)
val list2=new ListBuffer[int]() 不设置数组大小
+= ++= -= --=
List的集合由两部分组成
hade list1.head List集合的第一个元素
tail list1.tail List集合除去第一个元素的其他元素
List集合的转换
toList array3.toList
toArray list3.toAreray
4.Map
定义
(1)val map1=Map(("nana",12),("jingjing",23))
(2) val map2=Map("nana"->1,"jingjing"->2)
循环
map1.keys.foreach{
i =>print("key=“+i)
printIn("value="+map1(i))
map的几种方法
contains(包含) Boolean 判断是否存在key
map1("nana") 返回value map1("nan") 报错
map1.get("nana") 返回Opint[Int]=Some(12) Scala Option(选项)类型用来表示一个值是可选的(有值或无值)。
map1.getOrElse("nana",-1) Int=12 你可以使用 getOrElse() 方法来获取元组中存在的元素或者使用其默认的值,如果不存在的话则返回-1(可以自己定义)
5.Set
set实际上是Map集合上的key,set存储的元素是唯一的,不重复的,会自动去除掉重复的
val set=Set(1,2,3,1)
6.集合上常用的方法
map : 一对一映射 也就是对原来的集合中的每一个元素,执行某一项操作(该操作取决于函数的内容)
(自己的理解:万能转化器(自己想要什么格式,就转成什么格式) array3.map(_*2) array3.map(tp=>tp*2)
filter 过滤出满足条件的元素 array3.filter(_>22) array3.filter(tp=>tp>33&&tp<543)
filterNot 过滤出不满足条件的
flatten 压平

Unit 类型,没有返回值的类型(返回值为空)
sorted 排序
7.集合框架中常用方法
交集 array1.instersect(array3)
差集 array1.diff(array3)
并集 array1.union(array3)
Scala的集合框架的更多相关文章
- 【scala】集合框架
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 【目录】JUC集合框架目录
JUC集合框架的目录整理如下: 1. [JUC]JUC集合框架综述 2. [JUC]JDK1.8源码分析之ConcurrentHashMap(一) 3. [JUC]JDK1.8源码分析之Concurr ...
- java面试题——集合框架
先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...
- Java使用实现面向对象编程:第七章集合框架的解读=>重中之重
对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组 ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- Java 之 集合框架(JCF)
1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
随机推荐
- 从标准输入读取一行数组并保存(用的是字符串分割函数strtok_s() )
首先介绍字符串分割函数: char *strtok_s( char *strToken, //字符串包含一个标记或一个以上的标记. const char *strDelimit, //分隔符的设置 c ...
- PAT Basic 1039 到底买不买 (20 分)
小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...
- Wasserstein Generative Adversarial Nets (WGAN ) and CGAN
GAN目前是机器学习中非常受欢迎的研究方向.主要包括有两种类型的研究,一种是将GAN用于有趣的问题,另一种是试图增加GAN的模型稳定性. 事实上,稳定性在GAN训练中是非常重要的.起初的GAN模型在训 ...
- Codeforces 987 K预处理BFS 3n,7n+1随机结论题/不动点逆序对 X&Y=0连边DFS求连通块数目
A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...
- Vue基础第三章 - 计算属性
1.计算属性介绍 在第二章中我们介绍了在Vue的{{}}中可以使用一些简单的表达式进行计算,但是当表达式过长或者逻辑过于复杂就会变得不易理解和维护,比如第二章的示例{{ text.split(',') ...
- MySQL优化建议与使用规范
适用场景:并发量大.数据量大的互联网业务;可以先阅读必须掌握的MySQL优化指南 一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源 ...
- Python _easygui详细版
1. msgbox msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None) m ...
- js for循环 框架内部的
var head001 =true; var head002 = true; var head003 = true; ; h++) { console.log(h); } h=; ;h < ; ...
- Html5大文件断点续传实现方法
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- R 常用代码段
#用来根据不同的细胞来源重新画TSNE图cell_source <-colnames(immune_nobatch) cell_type <- strsplit(cell_source,s ...