数组的特征
数组的声明和创建 数组的封装
自定义数组
增——向数组中添加元素删——删除数组中的元素改——修改数组中的元素查——在数组中查找元素 测试 复杂度分析
数组的特征什么是数组:
数组是内存中一片连续的内存空间数组可以根据索引下标非常快速地定位到某个元素但是新增,删除元素的时候需要移动元素位置以保证其连续,效率会变低
数组的声明和创建
java语言中提供的数组是用来存储固定大小的同类元素java中可以使用两种方式来声明数组
dataType[] arr dataType arr[]
同样,java中数组的创建方式同样有两种
dataType[] arr=new dateType[arraySize];
dateType[] arr={value0,value1,value2,...};
数组的封装
数组最大的优点就是快速查询
自定义数组public class Array {
private int[] data;
//数组的大小
private int size;
}
自定义数组的构造方法
//构造函数
public Array(int n) {
data=new int[n];
size=0;
}
//无参构造函数
public Array() {
//默认大小为10
this(10);
}
基本功能
//获取数组的容量
public int getCapacity() {
return data.length;
}
//获取数组中的个数
public int getSize() {
return size;
}
//判断数组是否为空
public boolean isEmpty() {
return size==0;
}
public String toString() {
return Arrays.toString(data);
}
数组的扩容
//数组扩容
public void resize(int newCapacity) {
int[] newdata=new int[newCapacity];
for(int i=0;i
增——向数组中添加元素
向指定位置添加元素
//向数组任意位置添加元素
public void add(int index,int e) {
//判断输入的index是否合法
if(index<0 || index>size) {
throw new RuntimeException("index is not 0=index;i--) {
data[i+1]=data[i];
}
data[index]=e;
size++;
}
这样我们就可以通过index的值来向数组头尾添加元素
public void addLast(int e) {
add(size,e);
}
//向数组的头部添加元素
public void addFirst(int e) {
add(0,e);
}
删——删除数组中的元素
从数组中删除index位置上的元素,返回删除元素的值
//从数组中删除index位置上的元素,返回删除元素的值
public int remove(int index) {
if(index<0 || index>size) {
throw new RuntimeException("index is not 0
改——修改数组中的元素
修改index索引位置的元素
//修改index索引位置的元素
public void set(int index,int e) {
if(index<0 || index>size) {
throw new RuntimeException("index is not 0
查——在数组中查找元素
获取index索引位置的元素
//获取index索引位置的元素
public int get(int index) {
if(index<0 || index>size) {
throw new RuntimeException("index is not 0
测试
public class codeArrayMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Array arr=new Array(5);
//向头插入两个元素
arr.addFirst(1);
arr.addFirst(2);
//判断数组是否为空
System.out.println(arr.isEmpty());
//查找元素
System.out.println(arr.findE(2));
System.out.println(arr.toString());
//向数组末尾添加两个元素
arr.addLast(3);
arr.addLast(4);
System.out.println(arr.toString());
//向指定位置插入元素
arr.add(1,7);
arr.add(2, 9);
System.out.println(arr.toString());
//修改index索引位置元素
arr.set(2, 10);
System.out.println(arr.toString());
}
}
复杂度分析
时间复杂度
原则:忽略常数项、忽略第次项、忽略系数
时间复杂度由小到大依次为:O(1)2n)2)3)k)n)添加元素时间复杂度:O(n)删除元素时间复杂度:O(n)查找元素时间复杂度:O(n)改和查,已知索引O(1),未知索引O(n)



