List接口的实现类
List特点:有序,不唯一(可重复)
ArrayList实现了长度可变的数组,在内存中分配连续的空间
优点:遍历元素和随机访问元素的效率比较高
缺点:添加和删除需要大量移动元素效率低,按照内容查询效率低
LinkedList采用链表存储方式(链表:逻辑上连续,物理地址上并不连续)
优点:插入、删除元素时效率比较高
缺点:遍历和随机访问元素效率低下
LinkedList拥有更加丰富的方法实现,需要用的时候查询即可,不需要记忆
1.Vector也是List接口的一个子类实现
2.Vector跟ArrayList一样,底层都是使用数组进行实现的
3.面试经常问区别:
(1)ArrayList是线程不安全的,效率高,Vecotor是线程安全的,效率低
(2)ArrayList在扩容的时候扩容1.5倍,Vecotor在扩容的时候扩容2倍
在java代码中包含三种循环方式
do....while
while
for
还有一种增强for循环的方式,可以简化循环编写
所有的集合类都默认实现了Iterable的接口,实现此接口意味着具备了增强for循环的能力也就是for-each
增强for循环本质上使用的也是iterator的功能
方法:
iterator()
foreach()
在iterator的方法中,要求返回一个iterator的接口子类实例对象
此接口中包含的方法:
hasNext()
next()
在使用iterator进行迭代的过程中删除其中的某个元素会报错,并发操作异常,因此
如果遍历的同时需要修改元素,使用listIterator(),
ListIterator迭代器提供了向前和向后两种遍历方式
始终是通过cursor和lastret的指针来获取元素值及向下的遍历索引
当使用向前遍历的时候必须要保证指针在迭代器的结尾,否则无法获取结果值
Set接口中的实现类:
set接口存储一组唯一、无序的对象
2.set不可以通过下标获取对应位置的元素的值,因为无序的特点
存入和取出的顺序不一定一致,操作数据的方法与List类似,set接口不存在get()方法
遍历方法: