scala -- 集合简单入门操作

scala中的集合与集合操作 scala中的集合 Scala的集合类可以从三个维度进行切分: 可变与不可变集合(Immutable and mutable collections) 静态与延迟加载集合 (Eager and delayed evaluation ) 串行与并行计算集合(Sequential and parallel evaluation ) 可变与不可变集合[1] 可变集合可以在适当的地方被更新或扩 阅读详情

Scala中的集合操作

scala 官方文档:https://docs.scala-lang.org/tour/basics.html

       1.数组

              创建数组:

             数组的遍历:

            二维数组:

     2.List

    

//      创建list 并初始化数据
      var list = List(1,2,3)
//      在list首部,添加一个元素,并返回一个新集合
      var list2 = list.+:(4)   // List(4, 1, 2, 3)
//      同上
      var list3 = list.::(5)   //List(5, 1, 2, 3)
//      添加一个集合,返回一个新的集合,(合并)
      var list4 = list.:::(List(4,5))  // List(4, 5, 1, 2, 3)

//      获取指定下坐标下的值 或者list apply 0 或者 list(index)
      var a = list.apply(0)          // 1
//     返回 除了第 n个 元素之前 的 集合
      var list5 = list.drop(2)       //List(3)

//      修改指定位置并返回一个新集合(index,newValue)
      var list6 = list.updated(1,10)

//    count 统计计算符合条件的元素的个数
      var sum = list.count(_%2==0)   // 1  就一个2
//    filter 过滤 元素-1 后的值大于0,返回一个集合
      println(list)
      var list7 = list.filter(_-1>0)  // List(2,3)
//     map 遍历元素,并操作 根据操作得到的值 返回值类型
      var list8 = list.map(_+10+"得到的值") //List(11得到的值, 12得到的值, 13得到的值)
        println(list8)

//      循环遍历
      list.foreach(s => print(s + " "))

      for (i <- 0 until list.size) {
          println(list(i))
      }
      for (elem <- list) {
          println(elem)
      }
//      flatmap 扁平化 遍历操作
      val list9 = List(
          "hello world",
          "hello xiaodu",
          "good !!"
      )
        val aa = list9.flatMap{s => s.split(" ")} //aa = List(hello, world, hello, xiaodu, good, !!)
        println("aa = " + aa)

       3. set

//     set 中的元素不可重复,无序的
    val set = Set(1,2,3)
    val set1 = Set(3,4,5)
    val set2 = Set(1,2)
    println(set.+(1))  // Set(1, 2, 3); 添加一个元素,会自动去重
    println(set.+(3,4,5,6,7,8,9,0))  // 添加多个
//    交集
    println(set.intersect(set1))  //Set(3)
//    差集
    println(set.diff(set1))  // Set(1, 2);set 对于set1 的差集
//    子集  包含关系
    println(set2.subsetOf(set)) // set2 是否是set 的子集,返货boolean
//
    println(set.max) // 最大
    println(set.min) // 最小
//    转换为 数组
    val arr = set.toArray
//    转换为list
    val list = set.toList
//    mkstring, 把元素都转换为string ,并以一定的格式拼接
    println(set.mkString("@"))

//    遍历
    set.foreach(println)
    for (elem <- set) {
      println(elem)
    }
    set.map(s => println(s))

Map 操作

 

/创建
    val map = Map(
      ("a",1),
      "b" -> 2,
      ("c",3)
    )
// map 操作
    println(map.get("a").get)  // 通过key获取value
    println(map.get("a").getOrElse("not value")) //进行非空判断,空的时候返回not value

//    遍历
    for (elem <- map) {
      print("key : " + elem._1+ "  ") // 获取key
      println("value : " +elem._2 +"  ") // 获取value
    }
//    获取所有key
    println("keys = " + map.keys)
//    获取所有value
    println("values = " + map.values)
//    通过keys遍历 获取value
    for (elem <- map.keys) {
          println(map.get(elem).getOrElse("not value"))
    }
//  迭代器遍历
    var iter = map.iterator
    while(iter.hasNext) {
      var next = iter.next()
      println("key : " + next._1 +" = value : "+next._2)
    }
//  map 合并
    var map2 = Map(
      ("d",4),
      "e" -> 5
    )
    map.++(map2).foreach(println) // map2添加到头(push)
//  过滤  key== a
    map.filter(_._1.equals("a")).foreach(println) //(a,1)
//    count 统计
    var count = map.count(_._2>2)
    println("value > 2  的数量:" + count)
//  exit 返回Boolean
    println(map.exists(_._1=="a"))

元组 :tuple

//    创建  最多支持22个 可以支持任意类型
    var tup1 = Tuple1(1)
//    相当于map
    var tuple2 = Tuple2(("a",1),("b",2))
    var tuple3 = new Tuple3(1,2,3)
//    ...
    var tuple22 = Tuple22(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)
// 取值
    println(tuple3._3)
    println(tuple2._1._1)
//    遍历
    var iter = tuple3.productIterator
    while (iter.hasNext) {
      println( "tuple3中value = " + iter.next())
    }
    var iter2 = tuple2.productIterator
    while (iter2.hasNext) {
      println(iter2.next())
    }
//    swap 顺序反转, tuple2才能使用
    println(tuple2.swap)

 

十、Scala从入门到精通一一集合 目录10.1、数据结构特点10.1.1、Scala集合基本介绍10.1.2、可变集合和不可变集合举例三级目录 10.1、数据结构特点 10.1.1、Scala集合基本介绍 uml => 统一建模语言 1、Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问 两个主要的包: 不可变集合:scala.collection.immutable 可变集合:scala.collecti... 阅读详情

相关推荐

【Scala】基础之集合&序列操作大全

一、前言 数组是一种可变的、可索引的数据集合。在Scala中用Array[T]的形式来表示Java中的数组形式 T[]。 val numbers = Array(1, 2, 3, 4) //声明一个数组对象 val first = numbers(0) // 读取第一个元素 numbers(3) = 100 // 替换第四个元素为100 val biggerNumbers = numbers.map(_ * 2) // 所有元素乘2 1234 二、集合操作 Scala提供了大量的集合操作: def ++

a6458360的博客 966

求集合的所有子集

1. 问题 有一个集合,求其全部子集,包含自身。如给定一个集合 s,它包含两个元素 [a,b],则其全部的子集为 <a,ab, b> 2. 思路 采用迭代法计算过程如下: 假设原始集合元素为 [a,b,c,d] ,子集结果为 r,则 第一次迭代元素为 a 迭代结果为: r = [a] 第二次迭代元素为 b 迭代结果为: r = [a, ab, b] 第三次迭代元素为 c 迭代结果为: r = [a, ab, b, ac, abc, bc, c] 第四次迭代元素为 d 迭代结果为

wohu1104的专栏 1277

AutoLISP 学习 (一)

AutoLISP基本语法结构、语法 以括号组成表达式,左右括号一定要成对,单、双引号也要成对,例如: (defun c:hello() (princ "\nHello world!") (prin1) ) 表达式格式:(函数名 操作数 操作数 …),例如: (setq p1 (list 0 0)) (setq p2 (list 10 10)) (setq p3 (list 20 20)) ;;; CAD中画直线,经过p1 p2 p3 (command "LINE" p1 p2 p3 ""

m0_54575622的博客 2121

css标签显示模式

标签显示模式 1.1.1) 块级元素(block-level) 常见的块级元素<h1>~<h6>,<p>,<div>,<ul>,<ol>,<li>等,其中<div>标签是典型的块元素。 块级元素的特点 (1)比较霸道,自己独占一行 (2)高度,宽度,外边距和内边距都可以控制 (3)宽度默认是父元素宽度的100% (4)是一个容器及盒子,里面可以放行内或者块级元素 1.1.2 )行内元素(inline-level)

Gnemoah6的博客 1426

一文详解声码器

声码器(Vocoder)是语音信号处理领域的核心技术,其本质是通过“分析 - 参数化 - 合成” 的闭环流程,实现语音的高效编码、转换或生成。它不仅是早期语音通信的关键工具,更是现代 AI 语音技术(如 TTS、语音转换)的核心组件。以下从原理、技术分类、关键模块、应用及发展趋势展开详细解析。

weixin_41413777的博客 1351

JavaScript教程-字符集,Unicode转义序列,标识符,数据类型,数字,未定义值,浮点数,字符串,引用数据类型,类型检测,类型转换,运算符,关系运算符,

前端学习

VAN 211

scala 生成空的数组并初始化

1.Array.ofDim[Double](3,4)生成3*4的二维数组,初始值为0.0 2.Array.ofDim[Double](3)生成length=3的数组,初始值为0.0 3.Array.emptyDoubleArray()生成一个泛型为double的空数组 ...

yisun123456的博客 8199

软解调详解

在这个示例中,生成了一个随机的比特序列,将其调制为QPSK信号,添加了高斯白噪声,然后计算了每个比特的LLR,并根据LLR的符号进行了解调判决。软解调是一种基于接收信号的概率估计进行解调的方法。与传统的硬解调相比,软解调不仅考虑了接收信号的幅度和相位信息,还利用统计特性计算每个比特为0或1的概率,从而提高了解调性能。软解调过程中涉及的主要公式包括对数似然比(LLR)的计算公式、信号的概率分布函数以及解调判决公式等。软解调的计算处理流程包括信号接收、预处理、相位估计、LLR计算、解调判决和输出等步骤。

ahah12345678的博客 1225

html如何让元素在父元素中水平或垂直居中

如何让元素在父元素中水平或垂直居中 行内 text-align:center; line-height:height; 块级 1.给父元素设置 display;flex align-items:center; justify-content:center; 2.给父元素一个定位属性,子元素使用绝对定位, 并且使用配合属性left:50%;top:50%; 让子元素左上角移动到父元素中心位置; 然后再让子元素使用margin-left:-width/2;margin-top:-height/2;

weixin_42486003的博客 1178

软件可靠性测试与评价

本文系统介绍了软件可靠性工程的核心内容,包括可靠性概念、模型分类、测试方法和评价体系。重点解析了可靠性测试的三大步骤:定义运行剖面、设计测试用例和实施测试收集数据,并以智能安防系统为例说明具体应用。可靠性评价需结合业务场景,通过量化指标(MTBF、失效率等)和模型预测持续优化系统。文章强调可靠性需贯穿软件全生命周期,通过闭环反馈实现持续改进,为关键系统提供质量保障。

moton2017的博客 2048

基于摩尔线程 S80 显卡在 Ubuntu 系统下双卡交火部署 DeepSeek

curl -X POST -H "Content-Type: application/json" -d '{"prompt": "你的问题"}' http://localhost:11434/api/generate。curl -X POST -H "Content-Type: application/json" -d '{"prompt": "你的问题"}' http://localhost:11434/api/generate。- 为避免模型占用系统盘空间,可将模型存储路径修改到其他磁盘。

靡不有初,鲜克有终 1193

Scala基础部分知识点

Scala scala基础 数据类型 易混淆: 变量和常量的声明 package scala.basic /** * scala: * 1. scala object 相当于java中的单例,object中定义的全是静态的(相当与java的工具类) * 2. scala 中定义变量使用var,定义常量使用val,变量可变,常量不可变 * 3. scala 中每行后面会有分号自动推断机制,可以不写“;” * 4. 建议Scala中命名使用驼峰命名法 */ object obje

AnswerLinWJ的博客 288

预测股票价格趋势:使用MATLAB进行股票价格预测

通过收集股票数据、数据预处理、构建预测模型以及可视化结果,我们可以利用MATLAB强大的计算和分析功能来预测股票价格的走势。然而,需要注意的是,股票市场具有高度复杂性和不确定性,预测结果仅供参考,并不构成投资建议。然而,借助计算机编程和数据分析工具,我们可以利用历史股价数据来建立模型,并预测未来的股票价格走势。首先,我们需要获取股票的历史价格数据。完成模型的拟合后,我们可以使用该模型来进行未来股票价格的预测。最后,我们可以使用MATLAB的绘图功能将预测的股票价格与实际股票价格进行对比,并进行可视化展示。

2301_79326588的博客 1018

【Scala入门学习】集合常用方法和函数操作

reduce/reduceLeft/reduceRight: 认为每个元素类型一样fold: 带有初始值的reduce,初始值类型和元素类型一样;并行集合下注意初始值的设定;foldLeft/foldRight: 初始值类型和元素类型可以不一样,规约结果和初始值类型一致;并行集合下是单线程运算aggregate:初始值类型和元素类型可以不一样,规约结果和初始值类型一致;并行集合下是利用CPU核数运算。

2301_80912559的博客 1478

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【Scala入门】掌握Scala集合:列表、数组与集合操作

集合(Collection)在编程中扮演着至关重要的角色。Scala 提供了丰富且强大的集合库,支持多种集合类型和操作。本文将介绍 Scala 中的常用集合类型,包括列表(List)、数组(Array)以及其他集合类型,并详细讲解如何操作这些集合。

weixin_52938153的博客 1126

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

十一、Scala从入门到精通一一集合操作

目录11.1、集合元素的映射-map映射操作11.1.1、看一个实际需求11.1.2、map映射操作11.1.3、使用传统方法11.1.4、高阶函数基本使用案例111.1.5、高阶函数应用案例211.1.6、使用map映射函数来解决11.1.7、深刻理解map映射函数的机制-模拟实现11.1.8、课堂练习11.1.9、flatmap 映射:flat即压扁,压平,扁平化映射11.2、集合元素的过滤-...

learp 1886

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Scala集合

一、集合的简介 1)Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质。 2)对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本,分别位于以下两个包 不可变集合:scala.collection.immutable 可变集合:scala.collection.mutable 3)Scala不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而不会对原对象进行修改。类似于java中的String对象 4)可变集合,就是这个集

Markble 6538

Scala 集合扩展库:增强你的Scala集合操作

Scala 集合扩展库:增强你的Scala集合操作 1. 项目基础介绍 Scala 集合扩展库(scala-collection-contrib)是一个开源项目,旨在为Scala标准库中的集合框架提供额外的功能。该项目由Scala社区成员贡献,支持Scala 2.13及Scala 3版本,并且可以在JVM、Scala.js以及Scala Native等多种平台上运行。 主要编程语言:Scala 2...

gitblog_00609的博客 568

Scala之集合(2)

按照单词出现的次数排序:这样是需要自定义的 调用sortBy()函数(By---什么方式)设置返回类型就是按照什么排序(匿名函数)按照单词出现的次数反转排序:通过sortBy()源码可知他是采用了柯里化写法(闭包---把上层变量定义成常量传给下一层)上述代码在第一次传入参数返回的是以Int类型的集合 在对他进行封装成常量传递给下层 所以 在柯里化的第二个()的时候在设置类型的时候要设置Int类型。

&volume的博客 1866

Scala数据集合操作

大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1,数据集合:会涉及数据的搜集、存储等,搜集会有很多技术,存储现在比较经典的是使用Hadoop,也有很多情况使用Kafka; 2,对数据集合的操作技术:目前全球最火爆的是Spark; Spark的框架实现语言是Scala,首选的应用程序开发语言也是Scala,所以Scala对集合以及集合操作的支持就至关重要且必须异常强

麒麟 3558

【Scala】集合操作大全

SetMap它们中有多种不同的实现:对于几乎所有的集合类,Scala 都同时提供了可变和不可变的版本,分别位于以下两个包:不可变集合:scala..可变集合: scala.collection.StringPerdefArrayStringBufferval。

m0_57376367的博客 1385

Scala:Set集合的操作

1.声明 当前内容主要用于本人学习和复习,当前内容主要为测试Set集合的使用 当前内容借鉴:菜鸟教程 当前的Set集合可以分为两种: 可变Set集合:scala.collection.mutable.Set 不可变Set集合:scala.Set 2.公共的Set基本操作 该操作可以存在可变和不可变的Set集合的操作 1.创建Set集合: var 变量=Set() (创建空的Set集合) var 变量=Set[类型]() var 变量=Set[类型](初始化数据) var 变量:Set[类型]=Set[

编程学习者的博客 2854

scala List集合的用法

一、前言: 人们常说,Scala是一个难掌握的语言,一是其面向函数和面向对象结合的原因,二是其丰富的语法和内置函数。 对于Conllection 这一章的内容,更多的是利用内置函数灵活地运用,避免自己重复造轮子(要求性能高除外) 对于集合,通常来说有以下几个常用操作是必须掌握的: 1.增删改查单个元素 2.单个集合的各种遍历方式 3.单个集合分拆组合与翻转

残缺的歌的专栏 4万+

scala 操作元组、集合

scala 操作元组、集合

Jaemon 1376

Scala--集合操作

** 集合元素的映射 – map 映射操作** 问题抛出: 将 List(3,5,7) 中所有元素都 * 2,将其结果放到一个新的集合中返回,即返回 List(6,10,14) 传统方法: map 映射操作是一个操作,针对所有集合,并不是只针对 Map 集合 的操作 解决刚开始的问题: ⭐⭐⭐⭐⭐ 模拟map 映射函数 集合扁平化 flatMap 就是将集合中的每个元素的子元素映射到某个函数并返回新的集合 下面这种情况好像就不可以 集合元素过滤 filter filter: 将符合要求的数据(筛选

别下完这场雪 473
上一篇: activemq 简单代码演示 和 安全认证设置
下一篇: guava -- 集合API认识
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值