Scala之List
列表
不可变列表(List
)
-
在Scala中,通过
List
来定义不可变列表,需要注意的是,List本身是一个抽象类,所以并不能直接使用List来构建对象,需要使用它的伴生对象来构建package com.fesco.listimport scala.::object ListDemo {def main(args: Array[String]): Unit = {// 方式一val list = List[Int](2, 3, 4, 5, 6)println(list)val list2 = List.apply(2, 3, 4, 5, 6)println(list2)// 方式二:// :: 在list之前来追加数据val list3 = 1 :: listprintln(list3)// 方式三:// Nil是List的子类,表示一个空列表val list4 = Nilprintln(list4)// 方式四:val list5 = 1 :: 2 :: 3 :: 4 :: Nilprintln(list5)}}
-
List被
sealed
修饰,说明List是一个密封类,那么就意味着List的子类必须和List处在同一个scala文件中,即List无法直接扩展 -
基本操作
package com.fesco.listobject ListDemo2 {def main(args: Array[String]): Unit = {val list = List[Int](3, 4, 8, 1, 5, 9, 7)// 获取指定下标位置上的元素// 底层实际上是调用了父特质LinearSeq中的apply函数println(list(2))// 等价于println(list.apply(2))// 获取第一个元素// println(list(0))// 等价于println(list.head)// 获取最后一个元素println(list.last)// 追加一个元素 - 产生一个新的列表// val r1 = list :+ 6val r1 = list.:+(6)println(r1)// 在头部追加元素// 从右向左计算val r2 = 1 +: list// val r2 = list.+:(1)// 当出现:的时候,:对着谁就从谁开始计算// 如果两边都有:,那么从右向左计算// 错误的写法:list +: 1println(r2)// 或者// val r3 = list.::(1)val r3 = 1 :: list// list :: 1println(r3)// 构建了列表// 从右到左:先构建空列表List(),然后头部拆入5,在插入4val r4 = 1 :: 2 :: 3 :: 4 :: 5 :: List()// 等价于val r5 = 1 :: 2 :: 3 :: 4 :: 5 :: Nilprintln(r4)println(r5)}}
-
列表的合并
package com.fesco.listobject ListDemo3 {def main(args: Array[String]): Unit = {val list1 = List[Int](1, 2, 3, 4)val list2 = List[Int](5, 6, 7, 8)// 合并列表val r1 = list1 ++ list2println(r1)val r2 = list1 ++: list2println(r2)val r3 = list1 :++ list2println(r3)val r4 = list1.concat(list2)println(r4)val r5 = list1 ::: list2println(r5)}}
可变列表(ListBuffer
)
-
Scala中,通过ListBuffer来定义可变列表
package com.fesco.listimport scala.collection.mutable.ListBufferobject ListBufferDemo {def main(args: Array[String]): Unit = {// 方式一// 调用ListBuffer类的主构造器val buffer1 = new ListBuffer[Int]()buffer1 += 4println(buffer1)// 方式二// 调用了ListBuffer伴生对象中的apply函数val buffer2 = ListBuffer[Int](1, 2, 3, 4, 5)println(buffer2)}}
-
基本操作
package com.fesco.listimport scala.collection.mutable.ListBufferobject ListBufferDemo2 {def main(args: Array[String]): Unit = {val list = ListBuffer[Int](1, 2, 3, 4, 5)// 在尾部追加元素list += 4list append 7println(list)// 在头部插入元素list prepend 0// list.+=:(2)2 +=: listprintln(list)// 在指定下标位置上插入元素list.insert(3, 6)println(list)// 修改指定位置上的元素list(2) = 10list.update(3, 12)println(list)// 删除指定下标位置上的元素list.remove(0)println(list)// 删除指定的元素(第一个)list -= 3println(list)}}
-
合并列表
package com.fesco.listimport scala.collection.mutable.ListBufferobject ListBufferDemo3 {def main(args: Array[String]): Unit = {val list1 = ListBuffer[Int](1, 2, 3)val list2 = ListBuffer[Int](4, 5, 6)// 将list1和list2合并// ++合并之后产生一个新的列表,而不是修改原列表val r1 = list1 ++ list2println(r1)// 要求:将list2中的数据合并到list1中list1 ++= list2println(list1)// 获取list1中有而list3中没有的数据 - 差集val list3 = ListBuffer[Int](1, 3, 5, 7)list1 --= list3println(list1)}}
相关文章:
Scala之List
列表 不可变列表(List) 在Scala中,通过List来定义不可变列表,需要注意的是,List本身是一个抽象类,所以并不能直接使用List来构建对象,需要使用它的伴生对象来构建 package com.fesco.listimport scala.::object ListD…...

Springboot+Vue项目-基于Java+MySQL的在线视频教育平台系统(附源码+演示视频+LW)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...

Java IO流-字节流
简介 IO流的输入与输出,都在站在内存的角度来看的,因为毕竟是和内促你打交道的嘛! 分类 IO流是可以根据方向,或者最小单位进行划分的 上述两两结合一下,就得到四种大的分类 IO流的继承体系 字节输入流InputStream 创建…...

第十五届蓝桥杯复盘python大学A组——试题B 召唤数学精灵
按照正常思路解决,由于累乘消耗大量时间,因此这不是一个明智的解决方案。 这段代码执行速度非常慢的原因在于它试图计算非常大的数的阶乘(累乘),并且对于每一个i的值都执行这个计算。阶乘的增长是极其迅速的ÿ…...
网络通信——常见结构及强联网游戏和弱联网游戏区别
声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改。 网络通信——常见结构及强联网游戏和弱联网游戏区别 文章目录 网络通信——常见结构及强联网游戏和…...

如何安装PyFluent
0.什么是PyFluent? 官方介绍如下: PyFluent 是 PyAnsys 生态系统的一部分, 允许您在所选的 Python 环境中结合使用 Fluent 与其他 PyAnsys 库和外部 Python 库一起使用。 PyFluent 实现了客户端-服务器体系结构。它使用谷歌遥控器 过程调用或 gRPC 接…...
Qt 2 QMapQHashQVector类实例
1. QMap // 1:QMap的使用// 创建一个QMap 实例 key 为 QString value 为 intQMap<QString,int> Grade;// 插入方式有两种插入方式// 1.map[key] valueGrade["语文"] 90;Grade["数学"] 120;// 2.map.insert(key,value);Grade.insert("英语&qu…...
使用Git将文件夹上传到Github以及使用Git LFS上传大文件
使用Git将文件夹上传到Github以及使用Git LFS上传大文件...

1.SCI各模块
1.学会“抄” 写论文,一定要学会“抄”!这样才能事半功倍,尤其是对于初次写作的新手,否则写作过程一定会让你痛不欲生,而且写出来的东西就是一坨shi,不仅折磨自己,也折磨导师。 写论文与建大楼…...

记录shell编程中$1,$@等符号的含义
笔者最近老是遇到shell中的$相关的题目,于是打算写篇文章记录一下。考虑到并没有特别多需要解释的内容,所以并不会进行介绍,上图上表上代码,让机器说话,machine always right test.sh #/bin/bash echo $# $# echo …...

单链表的应用
文章目录 目录1. 单链表经典算法OJ题目1.1 [移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/description/)1.2 [链表的中间节点](https://leetcode.cn/problems/middle-of-the-linked-list/description/)1.3 [反转链表](https://leetcode.cn/problem…...

手机副业赚钱秘籍:让你的手机变成赚钱利器
当今社会,智能手机已然成为我们生活不可或缺的一部分。随着技术的飞速进步,手机不再仅仅是通讯工具,而是化身为生活伴侣与工作助手。在这个信息爆炸的时代,我们时常会被一种焦虑感所困扰:如何能让手机超越消磨时光的定…...
(二十七)Flask之数据库连接池DBUtils库
目录: 每篇前言:DBUtils库模式一(底层使用threading.local实现):模式二:Flask中使用方式一:直接将DBUtils初始化放到settings.py文件中方式二:从utils文件夹中导入脚本使用DBUtils代码demo:每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心…...
FewShotPromptTemplate和SemanticSimilarityExampleSelector的学习
FewShotPromptTemplate 和 SemanticSimilarityExampleSelector 是在少样本学习(FewShot Learning)场景中常用的两种技术,它们在提高模型泛化能力和减少对大量标注数据的依赖方面扮演着重要角色。 下面我会解释它们之间的关系: F…...

【保姆级】2024年OnlyFans订阅指南
OnlyFans是一个独特的社交媒体平台,它为创作者和粉丝提供了一个互动交流的空间。通过这个平台,创作者可以分享他们的独家内容,而粉丝则可以通过订阅来支持和享受这些内容。如果你对OnlyFans感兴趣,并希望成为其中的一员࿰…...

深入理解JVM中的G1垃圾收集器原理、过程和参数配置
码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在Java虚拟机(JVM)中,垃圾收集(GC)是一个自动管理内存的过程ÿ…...

VUE3 + Elementui-Plus 之 树形组件el-tree 一键展开(收起);一键全选(不全选)
需求: 产品要求权限树形结构添加外部复选框进行全部展开或收起;全选或不全选。 实现步骤: tree组件部分: <div class"role-handle"><div>权限选择(可多选)</div><div><el-checkbox v-mode…...

【Godot4自学手册】第三十七节钥匙控制开门
有些日子没有更新了,实在是琐事缠身啊,今天继续开始自学Godot4,继续完善地宫相关功能,在地宫中安装第二道门,只有主人公拿到钥匙才能开启这扇门,所以我们在合适位置放置一个宝箱,主人公开启宝箱…...

GitHub repository - Pulse - Contributors - Network
GitHub repository - Pulse - Contributors - Network 1. Pulse2. Contributors3. NetworkReferences 1. Pulse 显示该仓库最近的活动信息。该仓库中的软件是无人问津,还是在火热地开发之中,从这里可以一目了然。 2. Contributors 显示对该仓库进行过…...

RocketMQ 10 面试题FAQ
RocketMQ 面试FAQ 说说你们公司线上生产环境用的是什么消息中间件? 为什么要使用MQ? 因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq 解耦 系统耦合度降低,没有强依赖…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...