数组 也叫线性表
- 数组是相同类型元素的集合。
- 在内存中连续存储。
- 元素之间相邻存储。
数组的缺陷
1、数组的大小固定,存储空间预先分配,分配多了容易造成空间浪费,
少了容易造成溢出。
2、删除和插入操作,操作复杂。
数组的动态扩展
数组的操作
1、创建数组
创建数组时必须使用new操作符。
a.int[] intArray;
b.intArray=new int[100];
2、访问数组的数据项
通过数组的下标来访问数据项。
temp=intArray[3];//访问数组中的第4个元素
时间复杂度大O
线性查找 O(N)
二分查找 O(logN)
无序数组的插入 O(1)
有序数组的插入 O(N)
无序数组的删除 O(N)
有序数组的删除 O(N)
数组的扩展Vector类
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。
每个向量会试图通过维护 capacity 和 capacityIncrement 来优化存储管理。capacity 始终至少应与向量的大小相等;这个值通常比后者大些,因为随着将组件添加到向量中,其存储将按 capacityIncrement 的大小增加存储块。应用程序可以在插入大量组件前增加向量的容量;这样就减少了增加的重分配的量。
public class VectorDemo {
public static void main(String[] args) {
Vector<Integer> v=new Vector<Integer>(2);
/* public synchronized boolean add(E e) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = e;
return true;
}*/
System.out.println("v size"+v.size());
v.add(1);
System.out.println(v.size());
v.add(2);
v.add(3);
System.out.println(v.size());
v.addElement(4);
System.out.println(v.size());
/*public synchronized void addElement(E obj) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = obj;
}*/
}
}