粤嵌星计划打卡第四天(java基础语法:表达式的语句,语句块的概念)(迭代器)

本文深入讲解Java中的迭代器模式,包括其概念、作用及在集合框架中的应用。通过实例演示了如何使用迭代器遍历集合,并对比了for循环与foreach在不同集合上的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#粤嵌我来了##粤嵌星计划#
粤嵌星计划挑战
今天打卡第四天
今天主要学习迭代器
可迭代性:就是java集合框架中所有集合类的一个框架,就是把集合中的所有的元素都遍历一遍,迭代的过程也是需要一个迭代的对象,那么来了解一些迭代器:
迭代器:模式,又叫做游标模式,提供一个方法可以访问一个容器中各个元素,而又不需要暴露该对象的内部细节(java的集合框架类,有时候也称为,容器
本质是一种遍历算法。因为同期的实现千差万别,java提供的接口类叫做可迭代类,这些类在多数情况下,就是java.util包下的集合类
迭代器,就是接口iterator
代码演示:

public class Test {
    public static void main(String[] args) {
        List<String>list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        Iterator<String>it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}

1.hasNext() 该方法英语判断集合对象是否还有下一个元素,如果已经是最后一个元素则返回false

2.next() 把迭代器的指向移到下一个位置,同时,该方法返回下一个元素的引用

3.remove() 从迭代器指向的Collection中移除迭代器返回的最后一个元素,该操作使用的比较少。
iterator接口中 还有一个默认的方法 foreach
在这里插入图片描述
java中for和foreach遍历集合元素的差别
小知识点补充System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMillis());因为Date类还有构造Date(long date),用来计算long秒与1970年1月1日之间的毫秒差。
得到了这个毫秒数,我们自己也可以算起现在的年月日周时,但是这不是我们去计算的,因为有Calendar。Calendar最终出的结果就是年月日周时时区。
System.currentTimeMillis() 获得的是自1970-1-01 00:00:00.000 到当前时刻的时间距离,类型为long
String.valueOf(System.currentTimeMillis()) 这个语句可转为以下的型式:
long ct = System.currentTimeMillis();
String t = String.valueOf(ct);
其实上面的String t就相当于 ct+"";
只是转为字符串格式
eg:请计算自己从出生至今有多少秒

在这里插入图片描述
这是格式化的操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:遍历的时候两者的时间差距不是很大,但是遍历LinkedList集合,普通for循环话费时间较长。
for是使用下标(偏移量)定位的
foreach应该是使用类似循环子的结构
对随机访问效率高的ArrayList,使用下表访问的效率本身很高的。foreach内部的循环自直接封装下标,自己实现的for比foreach更加的直接,效率会高一些,但是差别不会是很大。
如果使用插入和删除效率高的likedList for给予下标访问会每一次从头进行查询效率会比较低,但是途多使用foreach的使用高效地址进行运算的额哈,效率较高,完全都不在一个数量级别,如果数组很大的话,差别就是有可能会更大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值