Java(Lambda、集合)、题解
一、Lambda表达式
-
标准格式
()对应方法的形参 ;->固定格式
-
注意点:
Lambda表达式可以用来简化匿名内部类的书写
Lambda表达式只能简化函数式接口的匿名内部类的写法
函数式接口:
有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加@Functionallnterface注解
-
Lambda表达式的基本作用
简化函数式接口的匿名内部类的写法
-
Lambda表达式使用前提
必须是接口的匿名内部类,接口中只能有一个抽象方法
-
Lambda的好处
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段
可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧
凑的代码风格,使Java语言表达能力得到了提升
-
Lambda表达式的省略写法
省略核心:可推导,可省略
1、参数类型可以省略不写。
2、如果只有一个参数,参数类型可以省略,同时()也可以省略。
3、如果Lambda表达式的方法体只有一行大括号,分号,return可以省略不写,需要同时省略。
二、集合
-
集合体系结构


-
Collection
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的

-
Collection的遍历方式
1、迭代器遍历(迭代器在Java中的类是iterator,迭代器是集合专用的遍历方式)

Collection<String> coll = new ArrayList<>();coll.add("aa");coll.add("bb");coll.add("cc");Iterator<String> it = coll.iterator();while (it.hasNext()){String str = it.next();System.out.println(str);}
注意:
- 1、报错NoSuchElementException
- 2、迭代器遍历完毕,指针不会复位
- 3、循环中只能用一次next方法
- 4、迭代器遍历时,不能用集合的方法进行增加或者删除
2、增强for遍历
- 增强for的底层就是迭代器,为了简化迭代器的代码书写的
- 其内部原理就是一个Iterator迭代器
- 所有的单列集合和数组才能用增强for进行遍历

3、Lambda表达式遍历

-
List系列集合:
添加的元素是有序、可重复、有索引
1、特有方法:
- Collection的方法List都继承了
- List集合因为有索引,所以多了很多索引操作的方法

-
Set系列集合:
添加的元素是无序、不重复、无索引
-
五中遍历方式对比

-
ArrayList集合底层原理
1、利用空参创建的集合,在底层创建一个默认长度为0的数组
2、添加第一个元素时,底层会创建一个新的长度为10的数组
3、存满时,会扩容1.5倍
4、 如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准
-
LinkedList集合
- 底层数据结构是双链表,查询慢,增删快,但是如果操作的是首尾元素,速度也是极快的。
- LinkedList本身多了很多直接操作首元素的特有API。

题解:
B - 线段树 1
线段树模版
代码:
#include<stdio.h>
const int N = 1e5+2;
int n, q;
long long s[N], a, b, c;
int f;struct nb
{int l, r;long long lazy;long long sum;
}t[4 * N];void he(int i)
{t[i].sum = t[i * 2].sum + t[i * 2 + 1].sum; //计算每个节点它的子节点的和
}void build(int i, int l, int r) //建立线段树
{t[i].l = l;t[i].r = r;if (l == r){t[i].sum = s[l];t[i].lazy = 0;return;}int mid = (l + r) / 2; //将元素对半分给子节点(不是值,是索引)build(i * 2, l, mid);build(i * 2 + 1, mid + 1, r);he(i);
}void vis(int i) //用于区间修改
{if (t[i].lazy){t[i * 2].sum += t[i].lazy * (t[i * 2].r - t[i * 2].l + 1);t[i * 2 + 1].sum += t[i].lazy * (t[i * 2 + 1].r - t[i * 2 + 1].l + 1);t[i * 2].lazy += t[i].lazy;t[i * 2 + 1].lazy += t[i].lazy;t[i].lazy = 0;}
}long long find(int i, int a, int b) //查找区间和,并返回值
{long long d = 0;if (a <= t[i].l && b >= t[i].r) //如果该节点在该区间内,直接返回该节点的值return t[i].sum;if (t[i].r<a || t[i].l>b) //如果两区间没有交集,直接结束返回0return 0;vis(i);if (t[i * 2].r >= a) //部分在,接着往下搜索d += find(i * 2, a, b);if (t[i * 2 + 1].l <= b)d += find(i * 2 + 1, a, b);return d;
}void add(int i, int a, int b, int c) //修改区间
{if (t[i].l >= a && t[i].r <= b){t[i].sum = t[i].sum + c * (t[i].r - t[i].l + 1);t[i].lazy += c;return;}vis(i);if (t[i * 2].r >= a)add(i * 2, a, b, c);if (t[i * 2 + 1].l <= b)add(i * 2 + 1, a, b, c);he(i);}
int main()
{scanf("%d %d", &n, &q);for (int i = 1; i <= n; i++)scanf("%lld", &s[i]);build(1, 1, n);while (q--){scanf(" %d", &f);if (f == 2){scanf("%lld %lld", &a, &b);printf("%lld\n", find(1, a, b));}else{scanf("%lld %lld %lld", &a, &b, &c);add(1, a, b, c);}}return 0;
}
相关文章:
Java(Lambda、集合)、题解
一、Lambda表达式 标准格式 ()对应方法的形参 ;->固定格式 注意点: Lambda表达式可以用来简化匿名内部类的书写 Lambda表达式只能简化函数式接口的匿名内部类的写法 函数式接口: 有且仅有一个抽象方法的接口叫做函数式接口&…...
Transformer学习: Transformer小模块学习--位置编码,多头自注意力,掩码矩阵
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Transformer学习 1 位置编码模块1.1 PE代码1.2 测试PE1.3 原文代码 2 多头自注意力模块2.1 多头自注意力代码2.2 测试多头注意力 3 未来序列掩码矩阵3.1 代码3.2 测试掩码 1 …...
easyexcel 动态列导出
1. 引入easyexcel <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version></dependency> 2.导出write public void export(HttpServletResponse response) {try {String f…...
flink源码编译-job提交
1、启动standalone集群的taskmanager standalone集群中的taskmanager启动类为 TaskManagerRunner 2 打开master启动类 通过 ctrln快捷键,找到、并打开类: org.apache.flink.runtime.taskexecutor.TaskManagerRunner 3 修改运⾏配置 基本完全按照mas…...
Mysql密码修改问题
docker安装mysql,直接拉取镜像,挂载关键目录即可启动,默认3306端口。此时无法直接连接,需要配置密码。docker进入mysql容器中 docker exec -it mysql bash #mysq是容器名称,也可以用容器id通过修改mysql的配置进行免密…...
建独立站,对FP商家有什么好处?
2024年都过去四分之一了,还有许多人对是否投身于跨境独立站领域仍犹豫不决。然而,观望不如实践,如果渴望在跨境电商领域开创一片新天地,那么现在就是行动的最佳时机。 特别是对于FP商家来说,由于电商平台对于黑五类产品…...
使用Postman进行websocket接口测试
因为最近要搞关于基于AI的文本接口测试.需要用到websocket协议,于是看了一下发现postman也可以测而且很方便 位置 File->New->WebSocket 可以看到不止WebSocket还支持其他的各种协议 使用 首先先点击connect进行连接 连接成功之后可以选择多种文本格式添加请求参数 每…...
Android音视频开发 - MediaMetadataRetriever 相关
Android音视频开发 - MediaMetadataRetriever 相关 MediaMetadataRetriever 是android中用于从媒体文件中提取元数据新的类. 可以获取音频,视频和图像文件的各种信息,如时长,标题,封面等. 1:初始化对象 private MediaMetadataRetriever mediaMetadataRetriever new MediaMe…...
注解(Annotation)
10.1 注解概述 10.1.1 什么是注解 注解(Annotation)是从JDK5.0开始引入,以“注解名”在代码中存在。例如: Override Deprecated SuppressWarnings(value”unchecked”) Annotation 可以像修饰符一样被使用,可用于修饰…...
蓝桥杯:七步诗 ← bfs
【题目来源】https://www.lanqiao.cn/problems/3447/learning/【题目描述】 煮豆燃豆苴,豆在釜中泣。本是同根生,相煎何太急?---曹植 所以,这道题目关乎豆子! 话说赤壁之战结束后,曹操的船舰被刘备烧了,引领军队从华容…...
Vue 如何快速上手
目录 1. Vue 是什么 (概念) 1.1. Vue 的两种使用方式 1.2. 优点 1.3. 缺点 2. 创建 Vue 实例,初始化渲染 2.1. 步骤(核心步骤 4步) 2.2. 练习——创建一个Vue实例 3. 插值表达式 {{ }} 3.1. 介绍 3.2. 作用…...
Vue3:组件间通信-provide和inject实现祖先组件与后代组件间直接通信
一、情景说明 我们学习了很多的组件间通信 这里在学习一种,祖先组件与后代组件间通信的技术 这里的后代,可以是多层继承关系,子组件,子子组件,子子子组件等等。 在祖先组件中通过provide配置向后代组件提供数据在后代…...
微信小程序——小程序和页面生命周期详解
小程序的生命周期 小程序的生命周期主要分为以下几个阶段: 创建(onLoad): 当小程序启动时,或者从其他页面跳转到当前页面时,会触发 onLoad 生命周期函数。 这个阶段通常用于初始化页面数据,从服…...
android studio中添加module依赖
android常用的三种依赖 库依赖(Library dependency):以访问网址的形式将依赖库相应版本下载到本地; 文件依赖(File dependency): 将下载下来的依赖库以.jar文件的形式添加依赖. module依赖(Modu…...
【.NET全栈】.NET全栈学习路线
一、微软官方C#学习 https://learn.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/ C#中的数据类型 二、2021 ASP.NET Core 开发者路线图 GitHub地址:https://github.com/MoienTajik/AspNetCore-Developer-Roadmap/blob/master/ReadMe.zh-Hans.md 三、路线…...
代码随想录阅读笔记-二叉树【二叉搜索树中的搜索】
题目 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 在上述示例中,如果要找的值是 5,但因为没有节点…...
1、初识drf
drf的学习需要学习者有django基本使用知识。 文章目录 什么是drf,有什么作用CBV是什么初步使用drf 下载以及django创建项目django最小启动内容修改setting修改 url 编写drf视图编辑url测试返回结果 什么是drf,有什么作用 drf(django rest-framework),让…...
速盾:cdn高防御服务器租用有哪些好处
随着互联网的发展,网络安全问题日益突出。攻击者利用各种手段不断对网站进行攻击,给网站的安全运行带来威胁。为了保障网站的正常运行和数据的安全,越来越多的网站开始租用CDN高防御服务器。那么,租用CDN高防御服务器有哪些好处呢…...
【跟小嘉学 Linux 系统架构与开发】四、文件和目录的权限
系列文章目录 【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍 【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍 【跟小嘉学 Linux 系统架构与开发】三、如何查看帮助文档 【跟小嘉学 Linux 系统架构与开发】四、文件和目录的权…...
ubuntu18.04图形界面卡死,鼠标键盘失灵, 通过MAC共享网络给Ubuntu解决!
ubuntu18.04图形界面卡死,鼠标键盘失灵, 通过MAC共享网络给Ubuntu解决! 1. 尝试从卡死的图形界面切换到命令行界面2. 进入bios和grub页面3. 更改Grub中的设置,以进入命令行4. 在命令行页面解决图形界面卡死的问题5. Mac共享WI-FI网…...
索尼Bravia家庭影院新品登场,能否重塑市场格局?
索尼Bravia新品:模块化家庭影院新选择索尼宣布推出七款新的Bravia家庭影院产品,涵盖一台电视、两款条形音箱、三款低音炮和后置音箱。除Theater Bar 5外,产品可自由搭配组合。其中,Bravia Theater Bar 7作为中高端条形音箱&#x…...
别再死磕EKF了!用ESKF搞定无人机姿态估计,避开‘大数吃小数’的坑
无人机姿态估计实战:用ESKF避开EKF的数值陷阱 四轴飞行器在高速翻滚时,IMU数据突然出现剧烈抖动——这是去年调试自主无人机时遇到的真实场景。当时使用传统EKF算法,姿态解算在极端机动下频繁发散,直到切换到误差状态卡尔曼滤波&a…...
抖音弹幕协议逆向实战:手把手解析Protobuf数据流(附Python代码)
抖音直播弹幕协议解析实战:从Protobuf到可读数据的完整链路 当直播间里飘过一条"老板大气"的弹幕时,你可能不知道这条简单的文字背后经历了怎样的技术旅程。作为开发者,我们看到的不是屏幕上那些花花绿绿的文字,而是一串…...
飞书文档全流程备份终极方案:从手动操作到自动化管理的完美转型
飞书文档全流程备份终极方案:从手动操作到自动化管理的完美转型 【免费下载链接】feishu-doc-export 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 价值定位:破解企业文档管理的三大核心痛点 📊 在数字化办公日益…...
Coda Prompt 实战:如何通过智能提示提升开发效率
作为一名开发者,每天面对海量代码,你是否也常常感到疲惫?重复的 CRUD 操作、频繁在文档和 IDE 之间切换、为某个函数命名绞尽脑汁……这些看似微小的“摩擦力”,日积月累却严重消耗着我们的精力与时间。今天,我想和大家…...
CherryStudio 在火山引擎上的实战应用:构建高可用微服务架构
在微服务架构大行其道的今天,我们团队也面临着许多开发者共同的烦恼:服务数量一多,管理起来就头疼。服务之间怎么互相找到对方?流量来了怎么公平分配?某个服务挂了会不会引发雪崩?这些问题不解决࿰…...
《Essential Macleod中文手册》实战指南:从入门到精通的光学薄膜设计
1. 光学薄膜设计入门:为什么选择Essential Macleod? 第一次接触光学薄膜设计时,我和大多数人一样感到无从下手。市面上有那么多仿真软件,为什么专业工程师都推荐Essential Macleod?简单来说,它就像光学薄膜…...
Pixel Fashion Atelier新手教程:非对称RPG布局下各模块功能与协作逻辑详解
Pixel Fashion Atelier新手教程:非对称RPG布局下各模块功能与协作逻辑详解 1. 认识像素时装锻造坊 Pixel Fashion Atelier(像素时装锻造坊)是一款基于Stable Diffusion与Anything-v5的图像生成工具,它通过独特的RPG游戏界面设计…...
告别.crx文件!手把手教你用crx2rnx工具转换GNSS观测值为RINEX格式(附武汉大学IGS数据下载指南)
从CRX到RINEX:GNSS观测数据转换实战指南 在卫星导航定位领域,RINEX(Receiver Independent Exchange Format)作为国际通用的标准数据格式,几乎成为所有GNSS数据处理软件的"通用语言"。然而,许多初…...
FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战
FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战 如果你是一个Java后端开发者,最近接到了要给系统加上语音识别功能的需求,比如处理用户上传的客服录音,或者分析会议纪要,那你可能正在寻找一个既稳定又…...
