集合的三种遍历方式

news2024/9/22 1:23:37

文章目录

目录

文章目录

一.迭代器遍历

二.增强for遍历

三. forEach方法

四. Lambda表达式

 函数式接口: 函数式接口是指只有一个抽象方法的接口

为什么Lambda只能用于函数式接口

总结


前言

作者简介:最爱吃兽奶

座右铭:抱怨身处黑暗,不如提灯前行

内容介绍:今天给大家讲一下集合的遍历方式。


一.迭代器遍历

迭代器(Iterator)是一种对象,它可以让我们遍历集合对象中的元素。Java中的集合类(例如ArrayList、LinkedList、HashSet、TreeSet等)都实现了Iterable接口,因此可以使用迭代器来遍历集合中的元素。

步骤

1.创建迭代器对象

2.判断是否有下一个元素

3.获取元素,并移动指针,指针默认指向起始位置

二.增强for遍历

增强for循环是一种Java语言中的循环结构,也称为for-each循环,底层由迭代器实现。它可以用来遍历数组或集合中的元素,语法比传统的for循环更简洁,代码更易读。增强for循环的语法格式如下: 

for (元素类型 变量名 : 数组或集合) {
// 循环体
}

其中,元素类型是数组或集合中元素的数据类型,变量名是每个元素的变量名,数组或集合是要遍历的对象。在循环体中,可以使用变量名来访问每个元素的值。增强for循环适用于遍历数组或集合中的所有元素,但无法访问数组或集合的下标或索引。 

三. forEach方法

​​​​​​​集合中的forEach方法是Java 8中引入的一种遍历集合元素的新方式,它可以让我们更方便地遍历集合中的元素,而且可以使用Lambda表达式或方法引用来处理集合中的元素。

四. Lambda表达式

Lambda表达式是Java 8中引入的一种新的语法,它可以用来简化函数式接口的实现。Lambda表达式的语法非常简洁,可以让我们更方便地编写函数式接口的实现代码。

格式

箭头符号(->)左侧是参数列表,右侧是函数体。

() -> {}

() : 和方法的参数匹配

{} : 和方法的方法体匹配

 可以省略的情况

1.省略参数类型:如果Lambda表达式的参数列表中只有一个参数,
并且该参数的类型可以根据上下文推断出来,则可以省略参数类型。
(String x) -> x + 1
(x) -> x + 1
2.省略参数括号:如果Lambda表达式的参数列表中只有一个参数,则可以省略参数括号。
复制代码
(x) -> x + 1
x -> x + 1
3.省略花括号:如果Lambda表达式的函数体中只有一条语句,则可以省略花括号。
复制代码
x -> {System.out.println(x)}
x -> System.out.println(x)
4.省略return关键字:如果Lambda表达式的函数体中只有一条语句,
并且该语句的结果可以直接返回,则可以省略return关键字。
(x,y) - > return x+y
(x, y) -> x + y
5.方法引用:如果Lambda表达式的函数体中只是调用了某个方法或构造函数,则可以使用方法引用来简化代码
x -> System.out.println(x)
System.out::println
需要注意的是,Lambda表达式只能用于函数式接口的实现,
即只有一个抽象方法的接口

 最终形式

 函数式接口: 函数式接口是指只有一个抽象方法的接口

Consumer接口中只有一个抽象方法accept,因此是函数是接口,可以使用Lambda表达式

为什么Lambda只能用于函数式接口

Lambda表达式只能用于函数式接口,是因为Lambda表达式的本质是一个函数,它需要一个明确的目标类型来确定其参数类型和返回值类型。如果Lambda表达式可以用于任意类型的接口,那么编译器就无法确定Lambda表达式的类型,也就无法确定其参数类型和返回值类型,这样就无法正确地推断Lambda表达式的类型,也就无法正确地进行类型检查和编译。因此,Lambda表达式只能用于函数式接口。


总结

又到了令人开心的总结环节了,还是那句话,自己去敲去吧,大家可一定要敲代码呀

点赞。这样的人,不是傻子,他们知道自己想要什么,也知道自己能做什么。

                                                                                                                              ----  最爱吃兽奶

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/564528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学完能拿下阿里23k的JMeter+Grafana+Influxdb搭建可视化性能测试监控平台

【背景说明】 使用jmeter进行性能测试时,工具自带的查看结果方式往往不够直观和明了,所以我们需要搭建一个可视化监控平台来完成结果监控,这里我们采用三种JMeterGrafanaInfluxdb的方法来完成平台搭建 【实现原理】 通过influxdb数据库存储…

Shell运维实战3-while、case、for、select

目录 case基本case 企业级案例 while 循环当型与直到后台运行while 实战 for & selectfor 循环方法linux 生成随机数select case 基本 请注意 case 使用后的闭合问题,开头 case,结尾 esac #! /bin/bashread -p "input your number:" ans…

【C++刷题集】-- day3

目录 选择题 单选 OR59 字符串中找出连续最长的数字串⭐ 【题目解析】 【解题思路】 JZ39 数组中出现次数超过一半的数字⭐ 【题目解析】 【解题思路1】 【解题思路2】 选择题 单选 1、以下程序的输出结果是 ( ) #include <stdio.h> int main() {char a[10] …

vite + vue3 + storybook + ts 搭建组件库记录

目标 只按需引入&#xff0c;不依赖babel-import-plugin 插件。第三方依赖都不打包。用原生fetch请求数据。仅支持esmodule。配置package.json type:"module" 搭建 根据storybook 官网文档&#xff0c;需要在已有的项目中运行 npx storybooklatest init 也就是事…

电源原理分析、波形分析、应力计算、回路布局

1、Flyback变换器工作模态分析&#xff1b; 2、Flyback关键波形分析&#xff1b; 3、RCD吸收电路设计及开关管应力&#xff1b; 4、从噪音回路看布线要点。 5、基于实际项目&#xff0c;原创反激开关电源视频教程曝光 Flyback 变换器模态分析 ​ ON&#xff1a;开关管导通&…

516. 最长回文子序列

516. 最长回文子序列 C代码&#xff1a;dp int longestPalindromeSubseq(char* s) {int n strlen(s);int dp[n][n];memset(dp, 0, sizeof(dp));for (int i 0; i < n; i) {dp[i][i] 1;}for (int i n - 1; i > 0; i--) {for (int j i 1; j < n; j) {if (s[i] s[…

2023最新CTF入门的正确姿势

前言 随着网络安全意识的增强&#xff0c;越来越多的人开始涉足网络安全领域&#xff0c;其中CTF比赛成为了重要的学习和竞赛平台。本人从事网络安全工作多年&#xff0c;也参加过大大小小的CTF比赛&#xff0c;今天就来详细介绍CTF的流程&#xff0c;以及需要具备的知识&…

【前端相关】elementui使用el-upload组件实现自定义上传

elementui使用el-upload组件实现自定义上传 一、问题描述二、实现方式三、实现步骤3.1 方式一&#xff1a;选择后自动上传3.2 方式二&#xff1a;选择图片后手动上传3.3 拓展&#xff1a;上传文件夹 四、服务器相关接口 一、问题描述 elmentui 中的upload默认的提交行为是通过…

[C++]哈希表实现,unordered_map\set封装

目录​​​​​​​ 前言&#xff1a; 1 哈希 1.1 为什么有哈希 1.2 哈希结构 1.3 哈希冲突 2 闭散列 2.1 闭散列结点结构和位置状态表示 2.2 哈希类结构 2.3 插入 2.4 查找 2.5 删除 3 开散列 3.1 哈希表结点结构 3.2 哈希表结构 3.3 插入 3.4 查找、删除 3.5…

Ubuntu/Debian/CentOS搭建Socks5代理一键脚本

说明 Socks5属于明文代理&#xff0c;不要用于科学上网&#xff0c;否则会被阻断端口&#xff0c;可用于正常的跳板使用&#xff1b; 比如SSH转发加速国外VPS的连接速度&#xff0c;特别是一些延迟高或者丢包高的VPS&#xff1b; 使用Socks5转发后SSH就可以快速稳定的连接了&a…

Java中的Replace和ReplaceAll的区别

replace和replaceAll是都是String类中提供的两种用于字符/字符串替换的方法&#xff0c;从字面意思理解&#xff0c;replace表示替换单个匹配项&#xff0c;而replaceAll表示替换所有匹配项&#xff1b;实际上并不是这样子的,replace和replaceAll都是替换所有匹配项,replace是非…

链式二叉树OJ题思路分享

⏩博主CSDN主页:杭电码农-NEO⏩   ⏩专栏分类:刷题分享⏪   ⏩代码仓库:NEO的学习日记⏩   &#x1f339;关注我&#x1faf5;带你刷更多C语言和数据结构的题!   &#x1f51d;&#x1f51d; 链式二叉树OJ题分享 1. 前言&#x1f6a9;2. 单值二叉树&#x1f6a9;2.1 审题…

macOS Ventura 13.5beta OpenCore黑苹果双引导分区原版镜像

镜像特点&#xff08;原文地址&#xff1a;http://www.imacosx.cn/113700.html&#xff0c;转载请注明出处&#xff09; 完全由黑果魏叔官方制作&#xff0c;针对各种机型进行默认配置&#xff0c;让黑苹果安装不再困难。系统镜像设置为双引导分区&#xff0c;全面去除clover引…

六级备考25天|CET-6|听力第五讲|演讲满分技巧|分值最高|2022年6月考题16-18题|18:15~19:00

14.2分一题 抓重点 目录 2. 听力原文复现 问题16 问题17 问题18 3. 听力原文重点词汇 问题16 问题17 问题18 2. 听力原文复现 问题16 What does the speaker say about most American hospitals&#xff1f; visit brief useless Dont challenge with the authority unle…

HEVC熵编码核心点介绍

熵编码基本原理 消息与信息 把客观物质运动和主观思维的活动状态表达出来就成为了消息&#xff1b;消息中包含信息&#xff0c;是信息的载体&#xff1b;因此&#xff0c;信息与消息既有区别又有联系的&#xff1b; 获取信息的过程就是一个消除或部分消除不确定性的过程&…

Linux网络基础-4

在之前的网络基础博客中&#xff0c;我们对网络进行了概要解释&#xff0c;了解了应用层和传输层的知名协议。接下来我们来对网络层的典型协议进行解析。 目录 1.网络层协议 2.IP协议 2.1协议格式 2.2地址管理 2.3特殊网络 2.3.1私网的组建 2.3.2特殊IP地址 2.4路由选…

ACP(MaxCompute篇)-Tunnel上传下载数据

概述 相关命令 odpscmd里面包含了tunnel test11_123>tunnel help; Usage: tunnel <subcommand> [options] [args] Type tunnel help <subcommand> for help on a specific subcommand.Available subcommands:upload (u)download (d)resume (r)show (s)purge …

探索SpringBoot 3.1的惊艳新特性

一、介绍 1.1 新特性概述 经过半年的沉淀 Spring Boot 3.1于2023年5月18日正式发布了&#xff0c;带来了许多令人兴奋的新特性和改进。本篇博客将详细介绍Spring Boot 3.1的新特性、升级说明以及核心功能的改进。 同时&#xff0c;2.6.x 版本线已经停止维护了&#xff0c;最新…

《消息队列高手课》课程笔记(二)

消息模型&#xff1a;主题和队列有什么区别&#xff1f; 两类消息模型 早期的消息队列&#xff0c;就是按照“队列”的数据结构来设计的。 生产者&#xff08;Producer&#xff09;发消息就是入队操作&#xff0c;消费者&#xff08;Consumer&#xff09;收消息就是出队也就是…

数字逻辑习题

第一次作业 第二次作业 第三次作业 卡诺图最小项 计算模数M考察74LS161的特点 计数器数据选择器 在A和C加上非门即可 求计数器的模数M 该计数器是环形计数器&#xff08;循环右移&#xff09;&#xff0c;模数根据初始状态而定 由n个移位寄存器构成的环形计数器最大可能模值为n…