集合、增强for、数据结构

Java中增强for循环的实现原理和坑详解 增强的for循环是在传统的for循环中增加的强大的迭代功能的循环,是在jdk1.5之后提出来的。下面这篇文章主要给大家介绍了关于Java中增强for循环的实现原理和坑的相关资料,需要的朋友可以参考下 立即下载

数组和集合的区别

1.数组的长度是固定的;数组元素类型可以是基本类型,也可以是引用类型
2.集合的长度是可变的;集合元素类型只能是引用数据类型。
    集合中如要想存储基本数据类型,需要转换为包装类
    int-->Integer

集合的体系结构

Colletion接口:集合体系的根接口
    -- List接口: 有索引、新增了一些对索引进行操作的方法
        ArrayList类
        LinkedList类

    -- Set接口: 没有索引
        HashSet类
        TreeSet类

Collection接口

public boolean add(E e) 
    将指定的元素集合的结尾
public void clear() 
    清空集合中的元素
public boolean contains(Object o) 
    如果这个列表包含指定元素,返回true
public boolean isEmpty() 
    如果集合不包含任何元素,则返回true
public boolean remove(Object o) 
    从这个集合中移除指定元素的一个实例,如果它是存在的(可选操作)。 
default boolean removeIf(Predicate<? super E> filter) 
    删除满足给定条件的这个集合的所有元素。 
    条件:通过Lambda表达式来提供
    
public int size() 
    返回此集合中的元素的数目
    
public Iterator iterator()
    获取集合的迭代器(是一种通用的遍历方式)

例://Collection是一个接口,不能直接创建的对象。但是可以创建它的实现类对象,也可以调用接口的方法。

Collection<String> coll=new ArrayList<>();

//添加元素
coll.add("helloJava");
coll.add("world");
coll.add("helloWorld");
coll.add("java");

//删除集合中以"hello"开头的元素
coll.removeIf(s->s.startsWith("hello"));  //这里的s表示集合中的元素

System.out.println(coll); 

迭代器遍历

Collection<String> coll=new ArrayList<>();

//添加元素
coll.add("土豆1");
coll.add("土豆2");
coll.add("土豆3");

//获取迭代器对象 (筷子)
Iterator<String> it = coll.iterator();

//判断是否有下一个元素
while (it.hasNext()){
    //获取元素
    String e = it.next();
    System.out.println(e);
}

//如果上面的循环结束了,表示元素已经遍历完了。继续获取元素会报错 NoSuchElementException
System.out.println(it.next()); 

使用迭代器时的注意事项:

注意问题:
    当使用迭代器进行遍历集合的时候,集合自己不能去操作集合中的元素。
    Java不允许迭代器和集合自己并发的修改集合    
    否则java.util.ConcurrentModificationException(并发修改异常)

解决方案:
    使用迭代器自己的删除方法 it.remove()

增强for遍历

增强for其实就是为了简化迭代器的代码书写,原理和迭代器一模一样。

for(元素类型  变量名 :  集合/数组){
    //变量名就表示所有的元素
}

快捷键:数组名.for

遍历集合:

Collection<String> coll=new ArrayList<>();
//添加元素
coll.add("土豆1");
coll.add("土豆2");
coll.add("土豆3");

//增强for
for(String s : coll){
    System.out.println(s);
}

遍历数组:

int[] array={1,2,3,4,5};
for(int s:array){
    System.out.println(s);
}

List集合特有方法 

//相对于Collection来说,List集合多了一些针对索引操作的方法

public void add(int index, E e)
    在指定的索引位置添加元素
public E remove(int index)
    根据索引删除元素,返回被删除的元素
public E get(int index)
    根据索引获取元素
public E set(int index, E e)
    修改指定索引的的元素

数据结构:数据的组织方式就叫做数据结构,不同的组织方式就形式不同的数据结构,每一种数据结构的特点不一样。

栈结构:先进后出  (子弹夹)
队列结构:先进先出 (排队、安检机)
    
数组:查询快,增删慢
链表:查询慢,增删快(每一个元素记录下一个元素的地址)

LinkedList类特有方法

由于 LinkedList底层是链表,新增了一些针对头和尾进行操作的方法。

public void addFirst(E e)
    添加元素到集合开头
public void addLast(E e)
    添加元素到集合末尾

public E removeFirst()
    移除开头的元素
public E removeLast()
    移除结尾的元素

public E getFirst()
    获取开头的元素
public E getLast()
    获取结尾的元素

2026 蓝牙技术趋势展望:信道探测、Auracast、高吞吐 HID 与 AI 融合引领行业变革 蓝牙技术2026年展望:信道探测、Auracast广播音频和AI融合将引领创新。蓝牙信道探测技术将实现亚米级精确定位,在工业资产追踪和汽车数字钥匙领域大显身手。Auracast广播音频将持续拓展公共场所应用,提升音频包容性体验。高数据吞吐量和超低延迟功能将支持AR/VR等新兴场景。AI与蓝牙的深度融合将推动可穿戴设备智能化发展,实现实时健康监测和个性化音频服务。蓝牙技术凭借其多功能性和创新力,正成为连接万物的关键技术,持续推动行业变革和生活品质提升。 阅读详情

相关推荐

银河麒麟服务器操作系统V10SP2实战:基于vsftpd构建多角色精细化权限FTP服务

本文详细介绍了在银河麒麟服务器操作系统V10SP2上基于vsftpd构建多角色精细化权限FTP服务的实战指南。从环境准备、核心配置到多角色用户权限管理,全面解析了FTP服务的部署与优化技巧,特别针对企业级应用场景提供了安全加固和故障排查方案。

weixin_30312563的博客 356

增强for循环的使用(数组和集合遍历尤为简单)

增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。 格式: for(元素的数据类型 变量 : Collection集合or数组){ //写操作代码 } 它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。 package day02collection; import java.util.A

m0_52646273的博客 1696

U-Net图像分割实战:从论文解析到PyTorch代码实现

本文深入解析了U-Net图像分割模型的经典架构与核心思想,并提供了从零开始的PyTorch代码实现教程。通过详细拆解编码器-解码器结构、跳跃连接等关键组件,手把手指导读者构建完整的U-Net网络,涵盖数据准备、模型训练、推理部署全流程,是掌握图像分割实战技能的实用指南。

fire9的博客 341

集合--增强for循环、泛型

1 增强for循环 (1)格式:for(数据类型 变量:遍历对象(集合或数组)){ 语句 } 变量就等价于next()方法返回的结果 (2)原理:增强for循环底部原理仍然是调用了迭代器。 (3)好处及弊端:简化了迭代器代码。只能做遍历元素操作,不能够在遍历的过程中对集合元素做其它操作。 public static void main(String[] args) { // 创建对象并添加 ...

小乔与你同在 447

Windows系统下复现PointNet++算法

本文详细介绍了如何在Windows系统下复现PointNet++算法,内容包括程序下载、环境配置、数据集准备以及三个主要任务(语义分割、分类、部件分割)的实现步骤和常见报错解决方法。通过遵循本文的指导,用户可以顺利完成PointNet++算法的复现。

LingYi_5的博客 4326

APK静态分析(取证角度)——理论部分

APP是指应用程序(Application),是指能够在手机、平板电脑、电脑等移动设备上运行的软件。APP可以帮助用户进行各种功能操作,如社交媒体、游戏、购物、学习、工作等。用户可以通过应用商店或者在线下载安装APP,然后在设备上使用它们。APP的种类非常丰富,能够满足用户不同的需求和兴趣。

currify的博客 3206

增强for循环

什么是增强for循环? 增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。他的内部原理其实是一个Iterator迭代器,所以再遍历的过程中,不能对集合中的的元素进行正山操作 格式如下: for (元素的数据类型 变量: Collection集合or数组) { // 写操作代码 } 注意: 增强for循环必须有被遍历的目标,目标只能是Collection或者是数组,而且增强for循环只能用作遍历 举例说明: 1、使用增强for循环遍历集合 p

技术积累,技术分享 7499

FPGA资料分享——FPGA开发板入手指南

FPGA学习,开发板怎么选,看这里,就一个通透

weixin_51627076的博客 7297

增强For循环以及集合遍历语法糖

增强For循环以及集合遍历语法糖

m0_55337678的博客 916

《QT+PCL 第一章》:点云读取显示

点云读取显示一、核心代码二、QT设置三、效果展示 一、核心代码 二、QT设置 三、效果展示

阁楼 1万+

Android 14.0 SystemUI下拉通知栏通知去掉长按事件

在14.0的系统rom产品定制化开发中,在systemui模块中关于下拉状态栏这块也是非常重要的部分,最近在关于systemui下拉通知栏的每条通知部分 要求去掉通知栏通知的长按事件,不需要长按功能,所以就需要分析下关于长按事件是在哪里注册的,然后去掉就可以了,接下来分析实现 相关功能

安卓兼职framework和app工程师的博客 276

集合,数据结构,ArrayList,LinkedList,Vector,泛型概述,增强for循环

2020.5.10(集合,数据结构,ArrayList,LinkedList,Vector,泛型概述,增强for循环) 集合 集合和数组的特点: 共同点:都作为容器,存储元素。 不同点: 数组:数组只能存同一种类型的数据,可以存储基本类型和引用类型,创建完成之后长度固定,不可以临时增加或者删除 集合:只能存储引用类型的数据,集合的长度是可以变的。一个集合可以存储各种类型的数据。 集合会将所用的共性向上抽取形成接口 子类对象实现父类接口,子类会有自己独特的方法 Collect

m0_46487113的博客 382

(一)激光线扫描-三维成像原理

激光线扫描是一种使用激光作为光源,通过特定的扫描设备(如光学镜头、电机驱动的镜头或电子扫描设备)将激光束引导到目标表面,并按照预定的路径进行扫描的技术。这种技术通常用于测量、检测、打印、切割等多种应用中。

FlyWine的博客 3629

javaSE--进阶七(集合,迭代器,增强for,数据结构)

数组和集合的区别 1.数组的长度是固定的;数组元素类型可以是基本类型,也可以是引用类型 2.集合的长度是可变的;集合元素类型只能是引用数据类型。 集合中如要想存储基本数据类型,需要转换为包装类 int-->Integer 集合的体系结构 Colletion接口:集合体系的根接口 -- List接口: 有索引、新增了一些对索引进行操作的方法 ArrayList类 LinkedList类 -- Set接口: 没有索引 HashSet类 TreeSet类 Collectio

zhenyu93的博客 135

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

集合、数据结构、泛型、可变参数、增强 for 循环

● 集合掌握以下几个方面: 1、集合的存储2、遍历集合,取出对象3、集合自己的特性 ● 增强 for 循环弊端: 没有索引,不能操作容器里面的元素(比如:增加一个元素) ● 数据结构及其特点: --堆栈,采用该结构的集合,对元素的存去有如下的特点:1、先进后出2、栈的入口、出口都是栈的顶端位置3、压栈:就是存元素。即,把元素存储到栈的顶端...

aiu5949的博客 78

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

JAVA基础11_集合_List集合_迭代器_增强for_常见数据结构

package com.f; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; public class Test_Collection { /** * 集合出现的意义: * 面向对象,要对对象进行存储。对象不能是一个基础的变量,需要用容器存储。 * * ...

RZH_long的博客 151

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java 进阶day05 集合、数据结构、迭代器、增强for、泛型

Java 进阶day05 集合、数据结构、迭代器、增强for、泛型

weixin_44504809的博客 160

Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口

摘要: Java基础加强重温_05:Iterator迭代器(指针跟踪元素)、增强for循环(格式、底层)、集合综合案例-斗地主(代码规范抽取代码)、数据结构【栈(先进后出,子弹夹)、队列(先进先出,火车过山洞)、数组(查找增删原理)、链表(多结点互相连接、单/双向)、红黑树(二叉查找树)】、List的子类【ArrayList集合(底层数组、扩容原理)、LinkedList集合(底层链表)、Vect...

Jinniu00 的博客 950

黑马程序员——集合——Set集合,增强for循环,数据结构,泛型,Collections集合工具类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一.Set集合 (1)Set集合的特点: 无序(存储和取出的顺序不一致),元素唯一 Set集合的子类: HashSet集合 TreeSet集合 LinkedHashSet集合 (2)HashSet集合 HashSet保证元素的唯一性的原理:

hison_lian的博客 1370

集合的根接口、集合的子接口List集合和Set集合、数据结构、Vector类和LinkedList类、泛型(Generic)、可变参数、增强for循环

集合的根接口Collection 集合的子接口List集合和Set集合 数据结构 概述:数据结构其实就是存储数据的格式 分类: 栈 , 队列 , 数组 , 链表 , 树 , 哈希表 栈特点: 先进后出 队列: 先进先出 ArrayList类、Vector类和LinkedList类 ArrayList类 概述:底层数据结构是数组,增删慢,查询快,线程不安全,效率高 int indexOf (O...

a__handsome的博客 313

Day13——Collection集合、迭代器、增强for、泛型、数据结构、List集合、Set集合、Collections

1.Collection集合 集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map 常用方法: public boolean add(E e): 把给定的对象添加到当前集合中 。 public void clear() :清空集合中所有的元素。 public boolean remove(E e): 把给定的对象在当前集合中删除。 public boolean contains(E e): 判断当

qq_44836534的博客 141

增强for循环不止是语法上的优雅

简单讲就是不同的数据结构存储方式不一样,需采用不同的算法,而增强for循环则解决了这个问题,避免我们简单粗暴的去遍历集合。

颤栗者-萧 8180

Java基础知识七:Collection集合、ArrayList集合、List集合、增强for循环、数据结构分类、LinkedList集合、集合案例

集合 集合:集合都是接口,想使用集合必须用实现类来完成 一、Collection(单例集合): --〉List(元素可重复)--〉Set(元素不可重复) 1、List实现类: ArrayList、LinkedList、…… 2、Set实现类:HashSet、TreeSet、…… 二、Map(双例集合)实现类: HashMap、…… Alt+7: 可以打来当前窗口所有类的列表信息 ArrayList: 可以存储重复元素 1、Collection集合遍历案例 2、...

分享Java技术知识,共同成长进步! 346

Day21.集合、Collection、Iterator(迭代)、增强for(foreach)、关于数据结构

JavaSE 集合

a111042555的博客 430

增强for循环遍历集合或数组

遍历:for循环遍历数组或集合;iterator迭代器遍历集合;还有增强for循环(for each)遍历数组或集合; 遍历数组: 遍历集合: 转载于:https://www.cnblogs.com/wmqiang/p/10658532.html...

weixin_30666753的博客 281

2025/10/25 递归练习 Collection 迭代器遍历 增强for遍历 Lambda表达式遍历 List集合 列表迭代器遍历 数据结构(栈、队列、数组、链表)泛型(继承及其通配符)

如果没有给集合指定类型,默认为所有的数据类型都是object类型,此时可以在集合中添加任意的数据类型。如果当前要添加的元素已经存在,方法返回False,因为Set系列的集合是不允许元素重复的。2、如果类型不确定,但是能知道以后只能传递某个继承体系中的,就可以使用泛型的通配符(限定类型的范围)1、如果在i当以类、方法、接口,如果类型不确定,就可以定义泛型类、泛型方法、泛型接口。链表中的结点是独立的对象,再内存种是不连续的,每个结点包含数据值和下一个结点的地址。,它的功能是全部的单列集合都可以继承使用。

weixin_52342637的博客 454
上一篇: 时间和日期类的实际运用(巩固用)
下一篇: 泛型、Set、二叉树
Figure_TheKeyboard
博客等级 码龄5年 6粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值