1.java实现动态数组
2.底层是数组
3.用泛型
4.实现增,删,改,查,等基本功能!
5.有不正之处,请指出!
package com.shuJuJieGou;
public class Array <E>{
private int size = 0; //数组数据量
private E[] data;
public Array(int capacity) {
// TODO Auto-generated constructor stub
data = (E[])new Object[capacity]; //java不支持直接new一个泛型,所以new一个object类型的,然后转成E[]类型的。
size = 0;
}
public Array() {
this(10);
}
public int getSize() { //查看数据中有多少个元素
return size;
}
public boolean isEmpty() { //数组是否为空
return size == 0;
}
public int getCapacity() { //获取容量,开辟多少空间
return data.length;
}
public void add(int index,E e) { //在index索引处,添加e
if (size == data.length) {
reSize(size*2);
}
for (int i = size; i >index; i--) {
data[i] = data[i-1];
}
data[index] = e;
size++;
}
private void reSize(int newSize) { //resize数组的capacity,
// TODO Auto-generated method stub
E[] newData = (E[]) new Object[newSize];
for (int i = 0; i < size; i++) {
newData[i] = data[i] ;
}
data = newData;
}
public void addLast(E e) {
add(size, e);
}
public void addFirst(E e) {
add(0, e);
}
public boolean contains(E e) { //查看数组中是否存在e
for (int i = 0; i < size; i++) {
if (data[i].equals(e)) {
return true;
}
}
return false;
}
public int find(E e) { //返回e的索引
for (int i = 0; i < size; i++) {
if (data[i].equals(e)) {
return i;
}
}
return -1;
}
public E delete(int index) { //删除index处的数字
E indexValue = data[index];
for (int i = index; i <size; i++) {
data[i] = data[i+1];
}
size--;
return indexValue;
}
public E deleteFirst() {
return delete(0);
}
public E deleteLast() {
return delete(size-1);
}
public void update(int index, E e) { //把index处的数据修改为e
data[index] = e;
}
@Override
public String toString() {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("[");
for (int i = 0; i < size; i++) {
if (i == size-1) {
stringBuffer.append(data[i]);
}else {
stringBuffer.append(data[i]+",");
}
}
stringBuffer.append("]");
return stringBuffer.toString();
}
}