package array;
import java.util.Set;
public class Array<E> {
private E[] data;
private int size;//下一个要放置的位置索引 [0,size-1]是已经放置好的元素
//有参构造
public Array(int capacity) {
data=(E[])new Object[ capacity];//新建容量大小
size=0;//数组里元素个数
}
//无参构造
public Array() {
this(10);
}
//判断是否为空
public boolean isEmpty() {
return size==0;
}
//返回元素个数
public int getSize() {
return size;
}
//向数组中添加元素
public void add(E e) {
add(size,e);
}
//向头部添加元素
public void addFirst(E e) {
add(0,e);
}
//添加元素
public void add(int index,E e) {
if (index<0||index>size) {
throw new IllegalArgumentException("add failed");
}
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 i) {
E[] newarr=(E[])new Object[i];
for (int j = 0; j < size; j++) {
newarr[j]=data[j];
}
data=newarr;
}
//打印数组
@Override
public String toString() {
StringBuilder res=new StringBuilder();
res.append("size="+size+"acpiticy="+data.length+" ");
res.append("[");
for (int i = 0; i < size; i++) {
res.append(data[i]);
if (i!=size-1) {
res.append(",");
}
}
res.append("]");
return res.toString();
}
//取出元素
public E get(int index) {
if (index<0||index>=size) {
throw new IllegalArgumentException("get failed");
}
return data[index];
}
//给指定位置赋值
public void set(int index,E e) {
if (index<0||index>=size) {
throw new IllegalArgumentException("set failed");
}
data[index]=e;
}
//数组中是否包含制定元素
public boolean contains(E e) {
for (int i = 0; i < size; i++) {
if (data[i].equals(e)) {
return true;
}
}
return false;
}
//数组指定元素的索引
public int find(E e) {
for (int i = 0; i < size; i++) {
if (data[i].equals(e)) {
return i;
}
}
return -1;
}
//删除第一个数
public E removeFirst() {
return remove(0);
}
//删除最后一个数
public E removeLast() {
return remove(size-1);
}
//删除指定索引数
public E remove (int index) {
if (index<0||index>=size) {
throw new IllegalArgumentException("remoce failed");
}
E res=data[index];
for (int i =index+1 ; i < size; i++) {
data[i-1]=data[i];
}
size--;
if(size==data.length/4) {
resize(data.length/2);
}
return res;
}
//删除指定元素
public void removeElement(E e) {
int index=find(e);
if (index!=-1) {
remove(index);
}
}
}
package array;import java.util.Set;public class Array<E> { private E[] data; private int size;//下一个要放置的位置索引 [0,size-1]是已经放置好的元素 //有参构造 public Array(int capacity) { data=(E[])new Object[ capacity];//新建容量大小 size=0;//数组里元素个数 } //无参构造 public Array() { this(10); } //判断是否为空 public boolean isEmpty() { return size==0; } //返回元素个数 public int getSize() { return size; } //向数组中添加元素 public void add(E e) { add(size,e); } //向头部添加元素 public void addFirst(E e) { add(0,e); } //添加元素 public void add(int index,E e) { if (index<0||index>size) { throw new IllegalArgumentException("add failed"); } 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 i) { E[] newarr=(E[])new Object[i]; for (int j = 0; j < size; j++) { newarr[j]=data[j]; } data=newarr; } //打印数组 public String toString() { StringBuilder res=new StringBuilder(); res.append("size="+size+"acpiticy="+data.length+" "); res.append("["); for (int i = 0; i < size; i++) { res.append(data[i]); if (i!=size-1) { res.append(","); } } res.append("]"); return res.toString(); } //取出元素 public E get(int index) { if (index<0||index>=size) { throw new IllegalArgumentException("get failed"); } return data[index]; } //给指定位置赋值 public void set(int index,E e) { if (index<0||index>=size) { throw new IllegalArgumentException("set failed"); } data[index]=e; } //数组中是否包含制定元素 public boolean contains(E e) { for (int i = 0; i < size; i++) { if (data[i].equals(e)) { return true; } } return false; } //数组指定元素的索引 public int find(E e) { for (int i = 0; i < size; i++) { if (data[i].equals(e)) { return i; } } return -1; } //删除第一个数 public E removeFirst() { return remove(0); } //删除最后一个数 public E removeLast() { return remove(size-1); } //删除指定索引数 public E remove (int index) { if (index<0||index>=size) { throw new IllegalArgumentException("remoce failed"); } E res=data[index]; for (int i =index+1 ; i < size; i++) { data[i-1]=data[i]; } size--; if(size==data.length/4) { resize(data.length/2); } return res; } //删除指定元素 public void removeElement(E e) { int index=find(e); if (index!=-1) { remove(index); } }}原文:https://www.cnblogs.com/pangpang321/p/10332122.html