内容概览
1. 数组与容器
数组作为一种存储数据的引用数据类型,它的基本特点是固定长度。这常常为开发者带来不便,如下标越界异常,每次要添加或读取数据时,都要先判断该数组的长度。
为了方便起见,Java在数组的基础之上设置了很多容器类,往大了分两种:Collection与Map,Collection下又分List与Set两大类。
这三大类的共同特点是:Collection,Map,List,Set都是接口,每个接口封装了大量方法,效率较之数组要高,
自动扩容,
只能存储引用数据类型,即不能存int,但能存Integer类。
不同点:List:此接口继承Collection接口,有序可重复;
Set:此接口也是继承Collection接口,无序且不可重复;
Map:存储键值对,键(key)值不可重复且不能为空,而值(value)可重复且可为空。
图源菜鸟教程集合框架图
简化版:简化版
2. 迭代器Iterator
迭代器Iterator是一个用来遍历集合类的工具接口,能让开发人员非常便利地进行输出删除等操作,迭代器不适用于Map。Iterator测试
注意点:集合类存放的都是对象的引用,而非对象本身
迭代器是一次性的,用完就没
it.next()方法是必须的,因为it.hasNext()是判断下一个是否存在,而跳到此对象则是it.next()完成的。
it.remove()方法删除的集合中的对象引用,而迭代器本来就是一次性的故不需要删除迭代器常用方法
3. ListIterotor
ListIterator是Iterator的子类,相较于Iterator,ListIterator更加灵活能进行反向遍历,且方法比Iterator稍微多一点,但只适用于List及其子类。ListIterator
注意点:ListIterator遍历后可直接反方向遍历,非一次性的;
增强for循环,即for each本身就是个迭代器,故Set与List可用该循环遍历。