package arr;
public class ArrayList {
private int size;
private int[] element;
private static final int DEFAULT_CAPACITY = 3;
private static final int ELEMENT_NO_FOUND = -1;
//初始化动态数组
public ArrayList(int capacity) {
capacity = (capacity < DEFAULT_CAPACITY) ? DEFAULT_CAPACITY : capacity;
this.size = 0;
this.element = new int[capacity];
}
//初始化动态数组
public ArrayList() {
this(DEFAULT_CAPACITY);
}
//尾插数据
public void add_data(int data) {
//判断数组是否满
if (size == DEFAULT_CAPACITY) {
//重新创建一个数组来接受小数组
int[] temp = new int[DEFAULT_CAPACITY * 2];
//拷贝小数组中的元素到大数组中
for (int i = 0; i < size; i++) {
temp[i] = element[i];
}
//更改数组指向
element = temp;
}
element[size] = data;
size++;
}
//按下标插入数据
public void add_index(int index,int data)
{
//判断下标
if(index<0||index>size)
{
throw new IndexOutOfBoundsException("下标错误");
}
//判断数组是否满
if (size == DEFAULT_CAPACITY) {
//重新创建一个数组来接受小数组
int[] temp = new int[DEFAULT_CAPACITY * 2];
//拷贝小数组中的元素到大数组中
for (int i = 0; i < size; i++) {
temp[i] = element[i];
}
//更改数组指向
element = temp;
}
for (int i = size; i >=index ; i--) {
element[i]=element[i-1];
}
element[index] = data;
size++;
}
//删除数据
public int remove_index(int index)
{
if(index<1||index>size)
{
throw new IndexOutOfBoundsException("下标错误");
}
int old = element[index-1];
for (int i = index-1; i < size; i++) {
element[i]=element[i+1];
}
size--;
return old;
}
public void remove_data(int data) {
remove_index(IndexOf(data));
System.out.println(data+"删除成功");
}
//修改某个位置的元素
public int set ( int index, int data)
{
if (index < 1 || index >size)//index>size
{
throw new IndexOutOfBoundsException("Index:" + index + ",size:" + size);
}
int old = element[index];
element[index-1] = data;//index-1
return old;
}
//查找某个元素的下标
public int IndexOf ( int data)
{
for (int i = 0; i < size; i++) {
if (data == element[i]) return i+1;
}
return ELEMENT_NO_FOUND;
}
//获取某个位置的元素
public int get ( int index)
{
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index:" + index + ",size:" + size);
}
return element[index];
}
//数组是否包含某个元素
public boolean contains ( int data)
{
return IndexOf(data) != ELEMENT_NO_FOUND;
}
//清除所有元素
public void clear ()
{
if (size < 50) {
size = 0;
} else {
element = null;
}
}
//打印对象里面的元素
@Override
public String toString () {
StringBuffer string = new StringBuffer();
string.append("size=").append(size).append(",[");
for (int i = 0; i < size; i++) {
if (i != 0) string.append(",");
string.append(element[i]);
}
string.append("]");
return string.toString();
}
}
如果您对代码有不一样的见解,请Q我