- 这就是我们迭代器移动的原理 , 其实它使指在了两个元素中间进行移动的 。
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
- OLED|提高 Java 性能的技巧
- Java|提高 Java 性能的技巧
- Java|Java基础的泛型你了解多少?
- Java|聊聊写简历的那些坑,为什么你投出去的简历总是石沉大海!
- Java|Java开发:哪些技能测试来评估Java开发人员的技能?
- javascript|亚马逊签署大规模协议以发射其互联网卫星,将SpaceX排除在外
- javascript|余承东、任正非、孟晚舟都表态了!美媒:华为的天要亮了!
- Java|老机型放抽屉里吃灰?OPPO推出旧机装裱活动,老用户有福了
- 华为鸿蒙系统|开源鸿蒙OpenHarmony 3.1 Release正式版更新,基础能力增强
- 京东云敏捷数字化底座,让大型企业基础设施天堑变通途