java集合—尚硅谷
Collection 接口 遍历原始 使用 的 是 迭代器 Iterator(迭代器)
1.Iterator 对象 称为 迭代器, 主要 用于 Collection 集合中的 元素
2. 实现了 Collection 接口 的 集合类 都有 一个 iterator(),用于 返回 实现了 Iterator 接口的对象
即可以返回 一个 迭代器
3. Iterator 仅用于 遍历集合 ,本身 不存放对象
迭代器的 原理 :
Iterator iterator(); 得到 一个 集合的 迭代器
通过 hashNext() 返回 是否为 ture 来判断 是否 还有 下一个元素
如果 返回 ture , 使用 next()
next() 作用 : 1. 指针下移 2. 将 下移的 集合位置 上的元素返回
注意点 : 在调用 iterator.next() 方法 之前 必须 调用 iterator. hasNext()进行检查,
如果不调用的 话 ,且 下一条 记录 无效 ,直接 调用 iteator.next() 就会 抛出 NoSuchElementExection异常
col.iterator();
如果还想再次遍历 ,需要 重置迭代器
Collection 接口 使用 增强 for循环 遍历 底层的话 还是使用 迭代器原理
在底层 new 了 一个 迭代器,然后使用 hashNext() 和 next() 进行输出
Collection 接口 使用 for循环 遍历
List 接口
- List 集合中的 元素 有序 (取出和添加顺序 一致 ) ,且可以重复
- List 集合中的 每个元素 都有对应的顺序索引, 即支持 索引。
ArrayList 底层原理 源码分析
底层是使用 数组实现的 线程不安全 add方法没有使用 线程安全修饰词
源码结论:
- ArrayList 底层维护了 一个 Object对象的 数组 ElementData
transient Object[] elementData; //transient 修饰的 表示短暂的, 不会被序列化 - 当使用 默认构造器的时候 , elementData 数组对象 默认的初始 容量为0 ,当添加 元素的 时候,扩容为 原来的 1.5 倍。
- 当使用 指定大小 的 构造器的 时候, 初始的 elementData 数组对象 为 指定大小的容量, 当需要扩容的时候 扩容为 原来的 1.5倍
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)