单列集合顶层接口Collection及五类遍历方式(迭代器)

2024-06-16 20:52

本文主要是介绍单列集合顶层接口Collection及五类遍历方式(迭代器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

collection

add方法细节:

remove方法细节:

contains方法细节:

如果集合中存储的是自定义对象, student之类的, 也想通过contains进行判断, 就必须在javaBean中重写equals方法

contains在arrayList中源代码:在底层调用了equals方法

重写:

一些回顾equals知识:

string中equals先判断是不是字符串,不是字符串直接false;
stringbuilder中无equals,继承的是父类object中,默认比较两者地址值。

Collection遍历:普通for无法用于set类型集合(无索引)

1、迭代器遍历:不依赖索引!!!!不会出现索引越界错误

        关键词:Iterator类

next:获取对应索引的值,并将指针移到下一位

hashnext:返回布尔类型,多用于循环判断

迭代器例子:

public class diedai {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");//获取迭代器对象Iterator<String> it =list.iterator();//it.hasNext()判断该索引有无元素while (it.hasNext()){//next:获取该索引的值,将指针移到下一位String str = it.next();System.out.println(str);}}

迭代器细节:

1.报错NoSuchElementException(不依赖索引!!!!不会出现索引越界错误,会出现元素不存在错误)

2.迭代器遍历完毕,指针不会复位,除非重新创建一个迭代器

3.循环中只能用一次next方法,next调用一次指针向后移动一次,next数量都是1不会出现错误

4.迭代器遍历时,不能用集合的方法进行增加或者删除,非要删元素可以利用迭代器自己的remove方法,添加元素暂时没办法(没学到)

关于细节4:仅限迭代时!!!!

2、增强for遍历:双列集合不适用

格式:for(数据类型 变量名:遍历集合名字)

for(集合/数组中元素的数据类型 变量名 : 集合/数组名) {

// 已经将当前遍历到的元素封装到变量中了,直接使用变量即可

细节:

3、lambda遍历:利用forEach方法,再结合lambda表达式的方式进行遍历

底层原理:

利用匿名内部类的形式


        其实也会自己遍历集合,依次得到每一个元素
       把得到的每一个元素,传递给下面的accept方法

例子:

    public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");//lambda完整版
//        list.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });//lambda省略版list.forEach(s-> System.out.println(s));}
}

4、三者关系

List:

特点:

特有方法:add、remove、set、get

删除方法细节:两种删除方法

记忆:当方法重载时,优先调用形参和实参数据类型相同的方法

List遍历方式:

其他的都与collection相同,分析一下列表迭代器:ListIterator

列表迭代器——可以增加元素,方法和流程和Iterator相同,默认指针指向0

五种遍历对比:迭代器(-remove),列表迭代器(+add)

这篇关于单列集合顶层接口Collection及五类遍历方式(迭代器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067526

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni