public class Array {
/**
* 默认容量为0,第一次添加时初始化容量为10,默认扩容倍数为1.5倍
*/
private Object[] elements = new Object[0];
/**
* 已添加元素个数
*/
private int size = 0;
/**
* 添加元素
*
* @param element
*/
public void add(Object element){
// 判断是否初始化过
if (elements.length == 0) {
elements = new Object[10];
}
// 这个length是容量
int length = elements.length;
// 判断是否需要扩容
if (size == length) {
// 此时需要扩容,扩容为1.5倍
int newLength = length + (length >> 1);
Object[] newArr = new Object[newLength];
// 复制原来数组中的内容
for (int i = 0; i < elements.length; i++) {
newArr[i] = elements[i];
}
elements = newArr;
}
// 添加新的元素
elements[size] = element;
size++;
}
/**
* 根据下标删除元素
*
* @param index
*/
public void remove(int index){
// 判断传入的index是否越界,只要超出了实际的元素个数就算越界
if (index < 0 || index >= size) {
throw new ArrayIndexOutOfBoundsException(index);
}
// 删除操作
for (int i = index; i < size - 1; i++){
elements[i] = elements[i + 1];
}
// 将最后一个元素置为null,因为已经移动到前面去了
elements[size - 1] = null;
size--;
}
/**
* 根据元素内容删除,删除第一个符合条件的
*
* @param element
*/
public void remove(Object element){
// 判断是否包含这个元素并返回索引,调用方法indexOf
int index = indexOf(element);
if (index != -1) {
// 调用参数为int类型的remove方法
remove(index);
}
}
/**
* 根据元素获取下标,找不到则返回-1
*
* @param element
* @return
*/
public int indexOf(Object element){
for (int i = 0; i < size; i++) {
if (element.equals(elements[i])) {
return i;
}
}
return -1;
}
/**
* 判断是否包含某个元素
*
* @param element
* @return
*/
public boolean contains(Object element) {
// for (int i = 0; i < size; i++) {
// if (elements[i].equals(element)) {
// return true;
// }
// }
int index = indexOf(element);
return index != -1 ? true : false;
}
/**
* 修改
*
* @param index
*/
public void set(int index, Object element) {
// 1 2 3 4 5 0 0 0 0 0
if (index <0 || index >= size) {
throw new ArrayIndexOutOfBoundsException(index);
}
elements[index] = element;
}
/**
* 根据下标查询元素
*
* @param index
* @return
*/
public Object get(int index) {
if (index <0 || index >= size) {
throw new ArrayIndexOutOfBoundsException(index);
}
return elements[index];
}
/**
* 遍历打印
*/
public void forEach() {
for (int i = 0; i < size; i++) {
System.out.println(elements[i]);
}
}
/**
* 获取元素个数
*
* @return
*/
public int size() {
return size;
}
}
如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤