Arraylist手工实现
package cn.sxt.Mycollection;
import javax.management.RuntimeErrorException;
public class SxtArrayList01 <E>{
private Object [] element;
private int size;
public SxtArrayList01() {
element =new Object[10];
}
public SxtArrayList01(int x)
{
if(x<0) {
throw new RuntimeErrorException(null, "容器容量不能为负数");
}
element =new Object[x];
}
//实现扩容
public void add(E ele)
{
if(size==element.length)
{
Object[] newArray =new Object[element.length*2];
System.arraycopy(element, 0, newArray, 0, element.length);
element=newArray;
}
element[size++]=ele;
}
public E get(int x)
{
checkRange(x);
return (E) element[x];
}
public void set(E obj,int x)
{
checkRange(x);
element[x]=obj;
}
public void checkRange(int x)
{
if(x<0||x>=size)
{
throw new RuntimeException("索引不合法"+x);
}
}
public void remove(E obj) {
for(int i=0;i<size;i++) {
if(obj.equals(element[i])) {
remove(i);
}
}
}
public void remove(int x) {
int number =element.length-x-1;
System.arraycopy(element, x+1, element, x, number);
element[--size]=null;
}
@Override
public String toString() {
StringBuilder s=new StringBuilder();
s.append('[');
for(int i=0;i<size;i++)
{
s.append(element[i]+",");
}
s.append(']');
return s.toString();
}
public static void main(String[] args) {
SxtArrayList01<String > s1= new SxtArrayList01<String>();
for(int i=0;i<40;i++)
s1.add("zt"+i);
System.out.println(s1);
s1.set("asd", 2);
s1.remove(2);
System.out.println(s1);
}
}