与数组区别:
1.数组是固定长度的,集合是可变长度用来存储对象数据
2.集合如果不添加泛型就可以保存不同类型的数据和对象,而数组一开始就指定了某种类型的
分类:
collection:根据存储数据的结构不同,进行了分类
|--List有序,因为有索引:ArrayList,LinkedList,Vector
|--Set无序,无索引:HashSet,TreeSet
集合存储的不是对象实体,而是对象的引用,打印集合打印的是里面的元素,而数组打的是引用
Collection的共性方法:
remove(xx),clear(),add(xx),contains(xx),a.retainAll(b):取交集,a.removeAll(b):取差集删除a中与b一样的元素
Iterator迭代器:是每个集合应该自己实现的,因为根据各自的数据存储结构,要各自实现取得方式,所以定义一个内部类实现这个接口,然后访问自己的数据
arraylist内部实际是一个Object[]数组在操作
List框架下的特有方法:
凡是可以操作index的方法都是list特有的,因为list是有索引的:操作的都是index对应的位置
添加:add(index,element),addAll(index,Collection)
删除:remove(index)
修改:set(index,element)
查找:get(index)
遍历:fori和listIterator()
当使用Iterator()的时候:集合本身对象不能使用删除和添加:remove和add方法,可以使用set方法修改元素,集合中的元素如果是引用类型的,引用类型本身是可以使用自己的方法的
如果使用了remove或者add那么会报:ConcurrentModificationException
而Iterator的三个方法都可以正常使用,haseNext,next和remove(删除的是集合中的元素)
对于List集合而言可以使用listIterator()方法获取到ListIterator迭代器,它可以在遍历过程中使用增删改查功能:add(xx),remove(),set(xx),next()