[Java][单列集合+数组遍历方法]增强for循环学习体会

在Java的学习中,我们已经习惯了使用for循环来进行遍历操作。这种操作在普通的数组和字符串中是非常有效的。但是当我们引入了集合这个概念,并且将多个不同的字符串储存进某一个集合的时候,我们发现原先的for循环是依赖于数组索引或者字符串索引的。

我们试想:在集合中,我们是否也可以引入索引的概念,并且利用索引来进行遍历操作呢?

答案是不完全地可以:由于集合分为两种:单列集合(list)双列集合(set)而其中仅有单列集合存在”索引“概念,因此我们只可以在前者中拓展for循环的使用空间,这种被拓展到单列集合中的for循环,我们称其为——增强for循环,所谓增强,也就是在一个单列集合中,可以使用。

我们现在来看一个简单的例子

import java.util.ArrayList;
import java.util.Collection;public class Main{public static void main(String[] args){//增强for遍历->底层就是迭代器->为了简化迭代器的书写我们设计了//内部原理->就是Iterator迭代器 在JDK5出现的//只有(单列集合)与(数组)使用增强for来遍历/*for(元素数据类型 变量名:数组或者集合){};*///1.创建集合并且添加元素Collection<String> coll = new ArrayList<>();coll.add("zhangsan");coll.add("lisi");coll.add("wangwu");//2.使用增强for进行遍历//注意点://S就是一个第三方变量,在循环中会依次表示的每一个数据//注意 字符串"zhangsan" "lisi" "wangwu"都会被依次赋值给s 因此我们直接打印s 就可以了//这里for循环的终止条件其实是自动设计的 Java会判断集合的大小 自动设置上限 到达上限自动结束循环for(String s:coll){System.out.println(s);}System.out.println(coll);//增强for循环的小细节:/*其中的s只是一个简单的第三方变量 修改这个第三方变量不会修改集合原本的数据* 就像我们在for(String s:coll)的循环体里面* s="qqq"修改这个第三方变量的值 发现无法改变集合的输出结果* 因为s是一个第三方变量 不会改变集合中原有的数据* */}
}
 

我们关注以下的语法结构:

for(元素数据类型 变量名:数组或者集合){
};

除去语法结构的,其余的注意事项在代码中注解更方便理解,请耐心阅读代码的注释

以下是一个用增强for循环来遍历数组的实例:

public class Main{public static void main(String[] args){int[] arr = {1,2,3,4,5,6,7,8,9,10};for(int s:arr){System.out.println(s);}/*分析这个代码结构:1.定义数组 并且储存值2.写一个增强for循环 在这里我们可以学习到两个细节:a. 我们在for循环的数据类型中填入的是int 而不是int[]b. 我们在循环中只输出第三方变量s 说明第三方变量s的类型也是int类型并且每当循环进行一次时,数组中下一个索引所指向的数据就会被赋值给int类型的s譬如:第一次循环数组 我们将Index为0的1赋值给s 于是System.out.println可以输出1第二次循环数组 index从0变化到1 我们将索引为1的值赋值给s 这个赋的值就是2 于是s就变成了2 输出结果也就是2第三次循环数组.....一直到第10次循环数组 这种逻辑关系其实也就这样建立了*/}
}

下面我们采取一个间接的方法对字符串中的字符进行输出

实现的逻辑就是:字符串->数组->加强for循环

public class Main{public static void main(String[] args){String str = "字符串也可以间接使用加强for喔";char[] arr = new char[18];for(int i=0;i<str.length();i++){arr[i]=str.charAt(i);}for(char c:arr){System.out.println(c);}}
}

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

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

相关文章

我的CSDN创作纪念日

⭐前言 同志们&#xff0c;大家好&#xff01;我是乱码怪才&#xff0c;这篇博客我来分享一下我和CSDN的故事————一个人工智能学生和CSDN的相遇。 &#x1f496;相遇CSDN&#x1f496; 我在刚上大学的时候就下载了CSDN&#xff0c;那时候只是在平台上搜一些C语言的算法题…

基于可穿戴的健康监护终端--研究进展报告

基于可穿戴的健康监护终端--研究进展报告 1 引言2 传感器介绍2.1 呼吸速率传感器2.2 温度传感器2.3 心脏跳动传感器 3 论文介绍3.1 Effective Data Decision-Making and Transmission System Based on Mobile Health for Chronic Disease Management in the Elderly3.2 Design …

代码随想录算法训练营 ---第四十六天

第一题&#xff1a; 简介&#xff1a; 本题的重点在于确定背包容量和物品数量 确定dp数组以及下标的含义 dp[i] : 字符串长度为i的话&#xff0c;dp[i]为true&#xff0c;表示可以拆分为一个或多个在字典中出现的单词。 2.确定递推公式 如果确定dp[j] 是true&#xff0c;且…

C语言结构体数组实现一个简单的登录注册功能

实现登录注册 登录功能&#xff1a;设计了一个结构体数组用来记录系统中所存在的人。首先设置了一个管理员身份的存放在第一行。登录的时候首先判断账号是否存在于数组当中。进行遍历数组中的所有元素的操作来进行查询&#xff0c;若是可以查询到那么就可以来判断他的密码是否…

fatal: remote error: upload-pack: not our ref (未解决问题)

PX4使用 git submodule update --init --recursive报错 fatal: remote error: upload-pack: not our ref解决办法参考&#xff1a;https://stackoverflow.com/questions/61163082/why-does-git-submodule-update-fail-with-fatal-remote-error-upload-pack-not-o 感觉就是清…

AI Agent应用落地前半场,属于企服软件厂商推出的平台级AI智能体

GPTs大受欢迎但问题多&#xff0c;企服厂商的AI Agent更被B端客户器重 比尔盖茨预言智能体是下个平台&#xff0c;超自动化平台的AI Agent更靠谱&#xff1f; 以GPTs为代表的AI Agent只是玩具&#xff1f;揭秘真实可用AI智能体长什么样 AI Agent应用落地前半场&#xff0c;属…

力扣hot100 最大子数组和 动态规划 分治 无后效性 子问题划分

&#x1f468;‍&#x1f3eb; 题目地址 无后效性 为了保证计算子问题能够按照顺序、不重复地进行&#xff0c;动态规划要求已经求解的子问题不受后续阶段的影响。这个条件也被叫做「无后效性」。换言之&#xff0c;动态规划对状态空间的遍历构成一张有向无环图&#xff0c;遍…

SRGAN 使用指南:将低分辨率图像转换为高分辨率图像

SRGAN、ESRGAN、Real-ESRGAN 使用指南 SRGAN网络结构优化目标 ESRGANReal-ESRGAN SRGAN 超分辨率&#xff1a;从低分辨率(LR)图像来估计其对应高分辨率(HR)图像的任务&#xff0c;被称作超分辨率(SR)。 SRGAN 图像超分辨率的深度学习模型&#xff0c;通过生成对抗网络&#x…

ubuntu运行风扇

su //输入密码 echo 50 > /sys/class/hwmon/hwmon1/pwm1 //执行CtrD命令退出

LeetCode(33)最小覆盖子串【滑动窗口】【困难】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 76. 最小覆盖子串 1.题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。 注意&#xff1a; 对于 t 中重复字…

Vim多行编辑

Vim多行编辑 Ctrlq进入多行编辑模式&#xff0c;然后上下选择要编辑的行 按下I或者Shifti&#xff0c;进入编辑模式 编辑的时候多行不会同时变化&#xff0c;不要担心&#xff0c;确实是多行编辑 编辑完成&#xff0c;想要结束多行编辑&#xff0c;按下Esc&#xff0c;此时…

视频水印怎么去除?3种方法让你轻松去除视频水印

剪辑作为当下自媒体必备技能&#xff0c;通过视频二次剪辑创作出吸引眼球的视频内容&#xff0c;然而&#xff0c;网上下载保存的图片/视频素材往往下载后会带有水印&#xff0c;于是去除水印便成为了不少人的头疼之事&#xff01; 为了解决这个问题&#xff0c;我们可以尝试以…

Vue组件的自定义事件$emit

组件上的自定义事件是和组件的自定义属性一样&#xff0c;都是模仿HTML正常的标签&#xff0c;由组件给出事件句柄&#xff0c;由使用组件的父组件提供事件处理函数。组件自定义事件真正触发的地方是在组件模板的标签上&#xff0c;组件自己不提供事件处理函数&#xff0c;将这…

vue select选择下拉组织树,解决不出现横向滚动条

背景&#xff1a;由于项目需求需要使用下拉选择框的组织架构树 实现代码如下&#xff1a; <el-row><el-col :span"18"><el-form-item label"所属组织:" prop"groupName"><el-select v-model"dataForm.groupName"…

国内某知名半导体公司:实现虚拟化环境下的文件跨网安全交换

立足特定应用领域的创新型企业 上海某半导体公司是中国10大集成电路设计公司之一的子公司。该半导体公司是一家特色工艺集成电路芯片制造企业&#xff0c;专注模拟电路、功率器件所需的特色生产工艺研发与制造&#xff0c;。 该半导体公司不断追求创新&#xff0c;提高自身产…

python爱心代码高级

在Python中&#xff0c;我们可以使用matplotlib库来创建一个更高级的爱心图形。以下是一个示例&#xff1a; import matplotlib.pyplot as pltimport numpy as npx np.linspace(-2, 2, 1000)y1 np.sqrt(1-(abs(x)-1)**2)y2 -3*np.sqrt(1-(abs(x)/2)**0.5)fig, ax plt.subp…

【Java Spring】SpringBoot 日志系统

文章目录 一、Spring Boot 日志系统1.1 Spring Boot 日志框架1.2 自定义日志打印1.3 日志级别设置1.4 日志持久化1.5 lombok 简化日志输出 一、Spring Boot 日志系统 1.1 Spring Boot 日志框架 SLF4J 和 logback都是spring boot内置的日志框架&#xff0c;开发者只负责调用对…

Java HashMap

HashMap 是 Map 接口中基于哈希表的非同步实现, 自身也可以自动扩容。使用时可以通过 key 快速定位到对应的 value。key 和 value 同时可以都为 null。 1 HashMap 的结构定义 JDK1.8 对 HashMap 进行了比较大的优化, 底层实现由之前的 “数组 链表” 改为 “数组 链表 红黑…

Selenium 学习(0.15)——软件测试之测试用例设计方法——场景法

1、场景法的基本概念 场景法是黑盒测试中一种重要的测试用例设计方法。它通过场景描述业务流程&#xff0c;包括基本流和备选流设计测试用例遍历软件系统功能&#xff0c;从而验证其正确性。 通过运用场景对系统的功能点或业务流程进行描述&#xff0c;从而提…