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的集合框架的更多相关文章

  1. 【scala】集合框架

  2. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  3. 【目录】JUC集合框架目录

    JUC集合框架的目录整理如下: 1. [JUC]JUC集合框架综述 2. [JUC]JDK1.8源码分析之ConcurrentHashMap(一) 3. [JUC]JDK1.8源码分析之Concurr ...

  4. java面试题——集合框架

    先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...

  5. Java使用实现面向对象编程:第七章集合框架的解读=>重中之重

    对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组 ...

  6. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  7. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  8. Java 之 集合框架(JCF)

    1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...

  9. 【集合框架】Java集合框架综述

    一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...

随机推荐

  1. IBM产品系列和AIX系统版本

      AIX系统版本 AIX 7.2 No supported AIX levels. AIX 7.1 Technology Level     Base Level     Recommended L ...

  2. java.lang.Object类(JDK1.7)

    1.Object的类方法 package java.lang; public class Object { private static native void registerNatives(); ...

  3. python grobal 的使用方法

    写一个功能,运行报错,name 'number' is used prior to global declaration ,查资料梳理一下 因为这个函数需要调用多次,第一次调用的时候,走if语句,后面 ...

  4. 转载:利用php数组函数进行函数式编程

    因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...

  5. Codeforces 976 正方格蛇形走位 二维偏序包含区间 度数图构造 贪心心火牧最大dmg

    A #include <bits/stdc++.h> using namespace std; typedef unsigned long long ull; int main() { i ...

  6. 如何在Linux下安装Tomcat

    上篇文章写到了Linux下安装JDK1.8,这篇文章详细阐述一下 如何在Linux下安装Tomcat!!!有啥问题可以留言,博主每天都会看博客的. 准备步骤和方法和以前一样,博主用的工具是XShell ...

  7. 动态添加+动态绑定(vue数据驱动思路)

    先上案例 首先来分析一下,勾选科目的时候,下面同时增加科目的满分值设置. 以前写jquery的思路:当勾选的时候创建dom节点,然后把dom节点append到父节点上,项目采用前后分离的方式进行交互, ...

  8. golang初识 和 变量,常量,iota

    目录 一.go语言与python 1. go语言 2. python 二.变量相关 1. go语言的基本语法 2. 标识符和关键字 3. 变量声明 (1)声明变量时未指定初始值 (2)声明变量时指定初 ...

  9. 机器学习降维--PCA

    1.原理和概念 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法. PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征 ...

  10. C#调用Python(二)

    python文件中有引入其他包.模块 一.源码 1.1  python源码,源码.python 打包方法,以及打包后的程序文件.请移步https://www.cnblogs.com/zhuanjiao ...