package com.example.lib;
import java.util.Objects;
public class Array<E> {
private E [] data;
private int size;
//构造
public Array(int capacity){
data = (E[]) new Object[capacity];
size=0;
}
public Array() {
this(10);
}
//添加末尾
public void addLast(E e){
add(size,e);
}
public void addFirst(E e){
add(0,e);
}
public void set(int index,E e){
data[index] =e;
}
public int find(E e){
for (int i = 0; i < size; i++) {
if (data[i]==e){
return i;
}
}
return -1;
}
//移除元素
public void removeElement(E e){
int index = find(e);
if (index!=-1){
remove(index);
}
}
public E remove(int index){
if (index<0||index>size)
throw new IllegalArgumentException( "remove failed Required index is not ok");
E deleteX=data[index];
for (int i = index+1; i < size; i++) {
data[i-1]=data[i];
}
if (size==data.length/2){
resize(data.length/2);
}
size--;
return deleteX;
}
public boolean isEmpty(){
return size==0;
}
/**
* 添加元素
* @param index
* @param e
*/
public void add(int index,E e){
if (index<0||index>size)
throw new IllegalArgumentException( "add failed Required index is not ok");
//空间满了
if (size==data.length){
resize(2*data.length);
}
for (int i = size-1; i >=index ; i--) {
data[i+1] = data[i];
}
data[index] =e;
size++;
}
//扩容
private void resize(int newCapacity) {
E[] newObj = (E[]) new Object[newCapacity];
for (int i = 0; i < size; i++) {
newObj[i]=data[i];
}
data = newObj;
}
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("[");
stringBuilder.append("size="+size);
stringBuilder.append(" capacity="+data.length+"]");
stringBuilder.append("\n[");
for (int i = 0; i < size; i++) {
if (i!=size-1){
stringBuilder.append(data[i]+",");
}else{
stringBuilder.append(data[i]+"]");
}
}
return stringBuilder.toString();
}
}
自定义数组Array
最新推荐文章于 2022-12-07 12:38:37 发布