#粤嵌我来了##粤嵌星计划#
粤嵌星计划挑战
今天打卡第四天
今天主要学习迭代器
可迭代性:就是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的使用高效地址进行运算的额哈,效率较高,完全都不在一个数量级别,如果数组很大的话,差别就是有可能会更大。