在编程中,我们经常需要考虑数据的储存方法——到底用什么东西去安置这些数据呢?
一般,少的可以用数组,但是数组只能存放规定大小、同一类型的数据;这样的话,不定长的可以试试链表,但是链表检索起来需要从头到尾,一旦数据多了会很慢。如果需要为一个对象存放多个不同类型的数据,可以用结构体,制作成链表。但是在Java中,更推荐用封装类来实现,用一个类来封装这些不同数据类型的数据,然后我们只需储存、管理类对象即可。如果事先知道有多少数据的话,可以用对象数组来储存。然而,实际应用中更多是不知道有多少数据的,那该如何呢?这时,我们可以使用集合类。
Java中集合类有很多,本文只针对经常使用的几个。文中涉及到的集合类主要有以下几种:
Java中集合类主要分两种:Collection和Map。Collection主要储存value值,而Map则以“key-value”形式存放数据。
Collection有两个子接口:List和Set,二者主要区别在于:list数据有序存放、可重复;set中数据无序存放,不可重复。
,如图,list相当于数组一样存放数据,每个数据是有下标对应的,通过下标来访问数据。
,而set只是提供了一片区域用来存放数据,数据的顺序只能依靠数据本身的值来决定,所以不能有重复值出现。
List下有三个常用的实现类:
1)Vector
Vector类实现了一个动态数组,主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
Vector类支持4种构造方法。
第一种构造方法创建一个默认的向量,默认大小为10:
Vector()
第二种构造方法创建指定大小的向量。
Vector(int size)
第三种构造方法创建指定大小的向量,并且增量用incr指定. 增量表示向量每次增加的元素数目(当该vector对象添加的元素接近原先分配的内存极限时,会以incr大小自动扩大该对象拥有的内存容量,以容纳更多的数据)
Vector(int size,int incr)
第四中构造方法创建一个包含集合c元素的向量:利用父类对象创建子类对象
Vector(Collection c)
常用的vector操作方法:增、删、查、改