package learn.java.collection;
import java.util.*;
public class MyArrayList {
public static void main(String [] args){
ArrayLis<Integer> aList=new ArrayLis<Integer>();
aList.add(2);
aList.add(7);
aList.add(1);
System.out.println(aList.get(0));
System.out.println(aList.size());
System.out.println(aList.isEmpty());
System.out.println(aList.contains("2"));
System.out.println(aList.contains(7));
System.out.println(aList.remove(2));
System.out.println(aList.contains(1));
// aList.set(2,6);
aList.set(1,6);
System.out.println(aList.indexOf(6));
Object[] arr=aList.toArray();
System.out.println(Arrays.toString(arr));
}
}
class ArrayLis <T> implements List <T>{
private T[] listArr;
private int size;
public ArrayLis()
{
listArr=(T[])new Object[10];
size=0;
}
public void ensureCapacity(int minCapcity){
int currentCapacity=listArr.length;
if(minCapcity>currentCapacity){
T[] oldlistArr=listArr;
listArr=(T[])new Object[minCapcity];
for(int i=0;i<size;i++)
listArr[i]=oldlistArr[i];
oldlistArr=null;
}
}
public void rangeCheck(int index,String msg,int upperBound){
if(index<0||index>=upperBound+1)
throw new IndexOutOfBoundsException("\n"+msg+":index"+index+"out of bounds");
}
public void add(int index, T item){
rangeCheck(index,"Arraylist add()",size);
if (listArr.length==size)
ensureCapacity(2*listArr.length);
for(int j=size-1;j>=index;j--){
listArr[j+1]=listArr[j];
}
listArr[index]=item;
size++;
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return size==0;
}
@Override
public boolean contains(Object o) {
for(int i=0;i<size;i++)
if(listArr[i]==o)
return true;
return false;
}
@Override
public Iterator<T> iterator() {
return null;
}
@Override
public Object[] toArray() {
return Arrays.copyOf(listArr,size);
}
@Override
public <T1> T1[] toArray(T1[] a) {
return Arrays.copyOf(a,size);
}
@Override
public boolean add(T t) {
add(size,t);
return true;
}
@Override
public boolean remove(Object o) {
int i;
for( i=0;i<size;i++)
if(listArr[i]==o)
break;
if(i==size)
return false;
for(int j=i-1;j<size;j++)
listArr[j]=listArr[j+1];
size--;
return true;
}
@Override
public boolean containsAll(Collection<?> c) {
return false;
}
@Override
public boolean addAll(Collection<? extends T> c) {
return false;
}
@Override
public boolean addAll(int index, Collection<? extends T> c) {
return false;
}
@Override
public boolean removeAll(Collection<?> c) {
return false;
}
@Override
public boolean retainAll(Collection<?> c) {
return false;
}
@Override
public void clear() {
}
@Override
public T get(int index) {
return listArr[index];
}
@Override
public T set(int index, T element) {
rangeCheck(index ,"set index",size-1);
listArr[index]=element;
return element;
}
@Override
public T remove(int index) {
rangeCheck(index,"remove index",size-1);
T r = listArr[index];
for(int i=index;i<size;i++)
listArr[i]=listArr[i+1];
size--;
return r;
}
@Override
public int indexOf(Object o) {
for(int i=0;i<size;i++)
if(listArr[i]==o)
return i;
return -1;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@Override
public ListIterator<T> listIterator() {
return null;
}
@Override
public ListIterator<T> listIterator(int index) {
return null;
}
@Override
public List<T> subList(int fromIndex, int toIndex) {
return null;
}
}
自己实现ArrayList
猜你喜欢
转载自blog.csdn.net/qq_38662930/article/details/84828634
今日推荐
周排行