集合的由来
首先我们知道Java是一种面向对象的编程语言,面向对象的语言对于事物的描述是通过对象所体现的,先对事物进行抽象,在对事物进行形象,最后使用形象的对象。为了方便对对象的操作(这里的操作主要可以从以下几个方面来理解,添加,删除,修改,查询等)就必须把对象进行存储。
在Java基础的时候我们知道数组可以用于对于对象的存储,变量也可以作对象的储存。但是要想存储多个对象就不能是一个基本的变量可以做到的。要想存储多个对象应该建立一个容器。基于这种想法我们可以用到数组来进行这样的操作。但是对于数组来说它不能适应变化的需要。我们在很多的实际的开发中,可以知道我们存储的对象是可变的,也就是说对象在不断的变化。对象的类型也在不断的变化中。这个是数组不能满足的。基于这样的一个背景,就产生了集合的概念。下面我们就来简单比较一下数组与集合的区别:
1、长度区别
a、数组的长度在它创建的时候就是固定的。
b、集合的长度根据所存储的对象的个数是可以变化的
2、内容不同
a、从数组的概念上来看:数组是存储一组相同数据类型的集合
b、集合类似于一个盒子,这个盒子里可以存放任何的东西。
3、元素数据类型问题
a、数组存储的都是基本的数据类型比如说:int double float等
b、集合在存储基本数据类型的基础上,还可以存放自定义类型混合存储
集合:集合是存储多个元素的,但是存储多个元素也是有不同的需求的,我们要求多个元素不能有相同的元素。对于数组来说这个是做不到的。但是针对不同的需求,Java提供了不同的集合类。这些集合类的实现的数据结构是不同的,但是数据结构并不是我们看中的重点。我们的重点是它可以存储数据,并且是可以使用的。所以这就要求所有的集合类都是有共同的东西,这样的话就可以将这些类的共同的特征抽象出来。通过向上继承实现了Java集合框架。
这个体系的老大就是Collection
下面是两个主要的类型
list
ArrayList
Vector
LinkedList
set
HashSet
TreeSet
下面我们简单的分析一下他的实现:从具体的内容到抽象的概念,再从抽象的概念到具体的对象。然后使用这些对象的西。那么我们应该怎么学习这些集合框架呢?
首先我们应该先了解他的继承体系。从老大Collection开始到小弟(ArrayList Vector LinkedList HashSet TreeSet等)从高层到底层的学习,因为高层的东西是所有底层都应该有的东西,学起来相对较简单。但是底层的内容相对较多。所以不适合。开始的学习。底层的东西容易叫人学乱了。不利于抽象层的理解。
我们提及到数据结构的概念:这里我们需要说明的一点就是关于数据结构的概念。数据结构就是数据的存储方式,这里我们提到集合类的实现是数据结构不同,其实就是 数据的存取方式不一样。
Collection 是集合的顶层接口。他的子体系结构中有重复的,有唯一的,有有序的,有无序的。
下面我们就来看看Collection的功能
添加功能
删除功能
获取功能
长度功能
交集功能
把集合转换成数组
通过这些功能我们可以理解到它的底层类也是有相同的功能,通过这些功能我们实现了这些集合框架的共有的功能。Collection实现的集合功能的高度的抽象。我们在以后的开发中我们就应该将自己的项目面对的事物高度的抽象,通过逐层的方式来实现这些接口方法。这样的话有利于扩展体系结构。