package com.myList;
public class MyArrayList {
private Object[] elementData;
private int size;
/**
* 默认大小
*/
public MyArrayList() {
this(2);
}
/**
* 返回list的大小
*
* @return
*/
public int size() {
return size;
}
/**
* 判断是否为空
*
* @return
*/
public boolean isEmpty() {
return size == 0;
}
/**
* 创建指定大小的list集合
*
* @param init
*/
public MyArrayList(int init) {
if (init < 0) {
try {
throw new Exception();
} catch (Exception e) {
System.out.println("长度不能小于0");
}
}
elementData = new Object[init];
}
/**
* 判断传入下标是否越界
*
* @param index
* @return
*/
private boolean outof(int index){
//与数组容量大小比较而不是当前数组大小
if (index < 0 || index >= getLength()) {
try {
throw new Exception("下标越界");
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
/**
*
* 数组扩容
*
* @param in
*/
private void addList() {
Object[] newArray = new Object[size * 2 + 1];
System.arraycopy(elementData, 0, newArray, 0, elementData.length);
elementData = newArray;
}
/**
* 增加一个元素
*
* @param element
*/
public void add(Object element) {
// 先判断
if (elementData.length == size) {
addList();
}
elementData[size++] = element;// 先赋值,后自增
}
/**
* 获取指定位置的对象
*
* @param index
* @return
*/
public Object get(int index) {
if(outof(index)) {
return elementData[index];
}
return null;
}
/**
* 删除一个指定位置的对象
*
* @param args
*/
public void remove(int index) {
if (outof(index)) {
System.arraycopy(elementData, index + 1, elementData, index, size - index - 1);
elementData[--size] = null;
}
}
/**
* 删除某个对象
*
* @param obj
*/
public void remove(Object obj) {
if (obj != null) {
for (int i = 0; i < size; i++) {
if (obj==elementData[i]) {
remove(i);
}
}
}
}
/**
* 修改某个位置的内容
*
* @param i
* @param obj
* @return
*/
public void set(int i, Object obj) {
if (outof(i) == true) {
elementData[i] = obj;
System.out.println("修改成功");
}
}
/**
* 获取list的容量
*
* @param list
* @return
*/
public int getLength() {
return elementData.length;
}
/**
* 在指定位置增加一个元素
*/
public void add(int index, Object obj) {
if (index >= 0 && index <= size) {
System.arraycopy(elementData, index, elementData, index + 1, size - index);
elementData[index] = obj;
size++;
System.out.println("增加成功");
}
}
}
如有错误,欢迎指点