1.为什么需要集合
Java是面向对象的编程语言,所以处理对象是它必须要完成的将,多个对象储存起来,有利于对多个对象进行操作,在储存多个变量的同时,很容易想到容器,常见的容器有StringBuffered,数组。所以Java提供的集合就派上了用场。
2.数组和集合的区别
数组:长度固定,可以储存基本数据类型,也可以储存引用类型。
集合:长度可变,集合只能储存引用类型。
3.集合的由来和功能
由来:集合可以储存多个元素,但是我们对多个元素有不相同的需求,它不能相同且可以按照某个规则排序。所以因为需求的不同,Java就提供了许多的集合类,每个集合类的数据结构都不相同,但是最重要的是能够存储东西,可以判断,或许,这才是关键。将集合共性的内容不断往上提取,最终形成集合的继承体系。
可以看到Collection的源代码中继承了Iterable,有iterator()这个方法
点击进入后,可以明显到的看到Iterable是一个接口:
它有iterator()这个方法,返回的是Iterator
它基本有三个方法:hasNext()、next()、remove()
但是,对应的实现方法仍然没有找到,只能往Collection的子类下继续寻找了,然后就在ArrayList下找到了如何让iterator实现的办法,实在ArrayList以内部类的方式实现。并且我们通过源代码可以得到:Iterator实际上就是在遍历集合。
所以综上所铸,遍历集合的元素都可以使用terator,它的实现是以内部类的方式实现。
从前文说过,Collection主要学习的集合类型分别是:Set和List,这里主要讲解List。
这里简单说一下List接口的方法,比Collection多一些。
List特点:有序,可以重复
Collection返回的是Iterator迭代器的接口,而List中Listlterator接口可以对应实现。Listlterator可以往前遍历,添加元素,设置元素。
List集合常用子类
1.ArrayList 数组是底层的数据结构,线程较为不安全
2.LinkedList 底层数据结构是链表,线程较为不安全
3.Vector 数组为底层数据结构,线程安全
方法相比于Collection少一些,Set的特点为元素不可重复。
Set集合常用子集
HashSet集合,底层数据的结构是一个元素为链表的数组
TreeSet集合,底层数据是一个自然平衡的二叉树;保证元素排列方式
LinkedHashSet集合,底层数据结构由以上两者组成