- 这就是我们迭代器移动的原理 , 其实它使指在了两个元素中间进行移动的 。
System.out.println(value);//当然使用增强for循环 , 可谓是对我们集合非常的方便简洁 。
Iterator<Integer> iter = list.iterator();
//我们可以利用lambda表达式 。
//直接调用forEachRemaining方法 。 (但是并不推荐使用此方法)
iter.forEachRemaining(value-> System.out.println(list));
- 对于Iterator接口还有一个remove()方法 , 见名知意删除 , 用法也没什么大区别 。
- 具体的Collection方法可以查看API文档进行学习 , 在这里我不一一介绍了 。
- boolean hasNext() 如果集合中还有元素 , 则返回true
- E next() 返回迭代中的下一个元素
- default void remove() 删除此迭代器返回的当前元素
- default void forEachRemaining(Consumer<? super E> action) 对每个剩余元素执行给定的操作 。
- 对于前面的学习我们已经知道了 , 集合的两个基本接口为:Collection和Map 。
- List是一个有序集合 , 当我们使用List接口的实现类时 , 元素都是按顺序添加进来的 , 就跟我们的数组一样 。
- 同时List集合中可以添加重复的元素 , 每个元素有自己的下标 。
- 所以我们可以采用两种访问方式:①使用迭代器访问 ②使用整数索引(数组下标)来访问----->也称之为随机访问 。
- ListIterator接口时Iterator的一个子接口 , 这个接口可以让我们在使用迭代器遍历时 , 对元素进行操作 , 我们可以对元素进行增删改查操作 。
- List接口下面有三个实现类分别为: ArrayList 、 LinkedList 、 Vector 。
- ArrayList是用数组实现的 , 它支持动态扩容机制 。 当前数组是由默认构造方法生成的空数组并且第一次添加数据 。 此时minCapacity等于默认的容量(10)那么根据下面逻辑可以看到最后数组的容量会从0扩容成10 。 而后的数组扩容才是按照当前容量的1.5倍进行扩容 。
优点:
- 根据下标遍历元素效率高
- 根据下标查询元素效率高
- 可以自动扩容
缺点:
- 插入、删除元素效率低 。 数组所谓的删除元素其实都是覆盖 , 没有真正的删除
- Collection接口所拥有的方法 , ArrayList都有
- void add(int indexE element) 在此列表中的指定位置插入指定的元素
- Object clone() 返回此ArrayList实例的浅拷贝
- boolean contains(Object o) 如果此列表包含指定的元素 , 则返回true
- void ensureCapacity(int minCapacity) 如果需要 , 增加此ArrayList实例的容量 , 以确保它可以至少保存最小容量参数指定的元素
- void forEach(Consumer<? super E> action) 对Iterable的每个元素执行给定的操作 , 直到所有元素都被处理或者动作引发异常 。
- E get(int index) 返回此列表中指定位置的元素
- int indexOf(Object o) 返回此列表中指定元素的第一次出现的索引 , 如果此列表不包含元素 , 则返回-1
- boolean isEmpty() 如果此列表不包含元素 , 则返回true
- int lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引 , 如果此列表不包含元素 , 则返回-1
- Java|干翻小米,红米又出超大杯旗舰,120W+2K直屏+双旗舰芯
- 百度地图|Java程序员应知应会之Maven和Gradle的区别
- javascript|穿戴设备将迎变革,OPPO又增新专利,能提升模式切换效率!
- Java|Gamamobi CEO黄继德:我们的元宇宙游戏不担心体验落差
- Java|美国传来新消息,ASML态度也变了,这一切竟如此之快
- Java|李佳琦消失扯下阿里“遮羞布”,原来淘宝根本就没有护城河
- Java|我做公众号终于不亏钱了
- 编程|打造Web3.0基础设施 百度瞄准元宇宙的“人货场”?
- Java|微信转账时弹出“这行字”,别输付款密码,有人已经中招了
- Java|合肥恒泽冠雨讲坛:哪些方法能够快速输出抖音视频内容?
