[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.mfbz.cn/a/199944.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解析javascript数组方法 find 和 filter 有何区别

首先用一个案例可以很直观的看到 find 和 filter 的区别&#xff1b; 相同点&#xff1a; 两者分别可以接受三个参数&#xff1a;当前元素、当前索引、整个数组&#xff1b;两者都可以用来查找数组中符合条件的元素&#xff1b; 不同点&#xff1a; find&#xff1a; 用于查…

连接备份1128

深度学习—分类识别篇&#xff1a;http://tr.daheng-imaging.com/watch/1050636http://tr.daheng-imaging.com/watch/1050636 深度学习—目标检测篇&#xff1a;http://tr.daheng-imaging.com/watch/1101141http://tr.daheng-imaging.com/watch/1101141 深度学习—缺陷分割篇&a…

【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录 1456. 定长子串中元音的最大数目2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值&#xff08;排序&#xff09;643. 子数组最大平均数 I1343. 大小为 K 且平均值大于等于阈值的子数组数目2090. 半径为 k 的子数组平均值2379. 得到 K 个黑块的最少涂色次数1052…

Gson的用法详解

一、简介 Gson&#xff08;又称Google Gson&#xff09;是Google公司发布的一个开放源代码的Java库&#xff0c;主要用途为序列化Java对象为JSON字符串&#xff0c;或反序列化JSON字符串成Java对象。 Gson官网&#xff1a;gson Gson源码地址&#xff1a;google/gson 二、依赖…

【Vue】Linux 运行 npm run serve 报错 vue-cli-service: Permission denied

问题描述 在Linux系统上运行npm run serve命令时&#xff0c;控制台报错&#xff1a; sudo npm run serve project50.1.0 serve vue-cli-service serve sh: 1: vue-cli-service: Permission denied错误截图如下&#xff1a; 原因分析 该错误是由于vue-cli-service文件权限不…

你知道显卡型号上的数字是什么意思吗?数字越大就越好吗?

大家好&#xff0c;欢迎来到我们的显卡探秘之旅&#xff01;今天&#xff0c;我们将一探究竟——显卡型号上的数字到底是啥意思&#xff1f;是不是数字越大&#xff0c;显卡就越NB&#xff1f;别急&#xff0c;跟着小编一起揭开这个神秘的数字面纱&#xff01; Q1 显卡的基本概…

数字人透明屏幕是如何工作的?

数字人透明屏幕是一种令人兴奋的科技产品&#xff0c;它结合了人脸识别、全息影像技术以及透明屏幕&#xff0c;为人们带来了全新的互动体验。本文将详细介绍数字人透明屏幕的工作原理以及其应用场景。 工作原理 数字人透明屏幕的工作原理主要包括人脸识别和全息影像技术。人脸…

灰度发布专题---4、APP灰度发布

APP如何灰度发布 我们前面讲解了配置文件灰度发布、IP切流、静态页灰度发布&#xff0c;但如果是APP该如何灰度发布呢&#xff1f;APP的灰度发布比较简单&#xff0c;也比较传统&#xff0c;不像我们其他程序能完全自动化操作。 APP灰度发布流程 上面这张图是灰度发布流程图&…

自研基于Xilinx PCIe的高性能多路视频采集与显示控制器

1 概述 视频采集与显示子系统可以实时采集多路视频信号&#xff0c;并存储到视频采集队列中&#xff0c;借助高效的硬实时视频帧出入队列管理和PCIe C2H DMA引擎&#xff0c;将采集到的视频帧实时传递到上位机采集缓冲区。在超带宽视频采集情况下&#xff0c;支持采集丢帧操作…

index函数

字符串的index函数可以查找字符串里(某范围内)某子串出现的位置(从左)。字符串的index函数的语法格式&#xff1a; S.index(sub [,start [,end]]) -> int 函数的返回值为整形&#xff0c;即位置。sub为要查找的子串&#xff0c;start参数的含义是从S字符串的第start位置开始…

C++ day42背包理论基础01 + 滚动数组

背包问题的重中之重是01背包 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 每一件物品其实只有两个状态&#xff0c;取或者不…

[DASCTF 2023 0X401七月暑期挑战赛] web刷题记录

文章目录 EzFlask方法一 python原型链污染方法二 flask框架静态文件方法三 pin码计算 MyPicDisk方法一 字符串拼接执行命令方法二 phar反序列化 ez_cms EzFlask 考点&#xff1a;python原型链污染、flask框架理解、pin码计算 源码如下 import uuidfrom flask import Flask, re…

python与机器学习1,机器学习的一些基础知识概述(完善ing)

目录 1 AI ,ML,DL,NN 等等概念分类 1.1 人工智能、机器学习、深度学习、神经网络之间的关系&#xff1a; 1.2 人工智能的发展 2 ML机器学习的分类&#xff1a;SL, USL,RL 2.1 机器学习的分类 2.2 具体的应用举例 2.3 数据分类 3 关于阈值θ和偏移量b的由来 4 不同的激…

VMware虚机重启后静态IP不生效

配置好一套虚机之后&#xff0c;因为重启电脑&#xff0c;导致虚机的静态ip配置不生效&#xff0c;xshell连接不上虚机。以下是自查和解决方案&#xff1a; 1.使用su -进入root用户 2.查看打开虚机的teminal窗口查看配置的ip文件&#xff1a;vim /etc/sysconfig/network-script…

使用Accelerate库在多GPU上进行LLM推理

大型语言模型(llm)已经彻底改变了自然语言处理领域。随着这些模型在规模和复杂性上的增长&#xff0c;推理的计算需求也显著增加。为了应对这一挑战利用多个gpu变得至关重要。 所以本文将在多个gpu上并行执行推理&#xff0c;主要包括&#xff1a;Accelerate库介绍&#xff0c;…

【APUE】进程间通信

目录 一、管道 1.1 匿名管道 1.2 命名管道 二、XSI IPC 2.1 概述 2.2 消息队列 2.2.1 msgget 2.2.2 msgsnd 2.2.3 msgrcv 2.2.4 msgctl 2.2.5 代码示例 2.3 信号量数组 2.3.1 semget 2.3.2 semop 2.3.3 semctl 2.3.4 代码示例 2.3 共享内存 2.3.1 shmget…

PVE中CT容器安装openwrt X86的极简方法

下载推荐&#xff1a;https://openwrt.ai/ 使用环境PVE8.0&#xff0c;openwrt是以上网址的最新版&#xff0c;内涵及其丰富组件。 问题来源&#xff1a; 在PVE虚拟机可以很方便的使用img文件&#xff0c;转换qm 成一个硬盘文件&#xff0c;加入到虚拟机也就完成了&#xff0c…

《git小白笔记·一》记住这些Git使用就够了

到底选gitlab还是选github&#xff1f;&#xff1a; 只要掌握这些git命令完全够用&#xff1a; &#xff08;1&#xff09;首先我们先下载一个git&#xff0c;下载完成后属于右键会看到git GUI here和git Bash here&#xff0c;我们常用git Bash here&#xff0c;打开Git我们看…

台灯哪种灯光对眼睛好?精选高品质的护眼台灯

近几年越来越多家长开始重视孩子的视力健康问题&#xff0c;要知道如今我国儿童青少年的近视率已经达到了52.7%&#xff0c;也就是说平均每十个儿童青少年中就有五个是存在视力问题的&#xff0c;而且近视的人群是越往高年级的学生占比越多。不过目前也发现了不少低年级的孩子出…

嵌入式总线技术详解

1. 总线概述 1.1 总线定义 总线&#xff08;Bus&#xff09;是计算机各种功能部件之间传送信息的公共通信干线它是由导线组成的传输线束&#xff0c;按照计算机所传输的信息种类&#xff0c;计算机的总线可以划分为数据总线、地址总线和控制总线&#xff0c;分别用来传输数据…
最新文章