package com.yinchong.array;
/**
* @author Administrator
*它具有的操作:
*添加(不够就扩容)
*删除
*根据索引获取
*清空
*是否为空
* @param <T>
*/
public class MyArrayList<T> {
private Object[] objects ={};
private int size=0;
/**
* 添加元素
* @param t
*/
public void add(T t){
if(objects==null||objects.length==0)
objects=new Object[10];
if(size>=objects.length-1)
copyAndExtend();
objects[size++]=t;
}
/**
* 复制并扩充
*/
private void copyAndExtend() {
int count = objects.length;
int len =count +(count>>1);//位移的优先级低与加号
Object[] temp = objects;
objects = new Object[len];
for(int i=0;i<count;i++){
if(temp[i]==null)
break;
objects[i]=temp[i];
}
}
/**获取操作
* @param index
* @return
*/
public T get(int index){
if((index>=size)||(index<0))
return null;
return (T) objects[index];
}
/**
* 删除操作
* @param index
* @return
*/
public T remove(int index){
if((index>=size)||(index<0))
return null;
T temp = (T) objects[index];
move(index);
return temp;
}
/**删掉进行位移
* @param index
*/
private void move(int index) {
for(int i=index;i<objects.length;i++){
objects[index]=objects[index+1];
if(objects[index]==null)
break;
}
size--;
}
/**
* 清空操作
*/
public void clear(){
objects = null;
size=0;
}
public boolean isEmpty(){
return size==0;
}
public int size(){
return size;
}
}
/**
* @author Administrator
*它具有的操作:
*添加(不够就扩容)
*删除
*根据索引获取
*清空
*是否为空
* @param <T>
*/
public class MyArrayList<T> {
private Object[] objects ={};
private int size=0;
/**
* 添加元素
* @param t
*/
public void add(T t){
if(objects==null||objects.length==0)
objects=new Object[10];
if(size>=objects.length-1)
copyAndExtend();
objects[size++]=t;
}
/**
* 复制并扩充
*/
private void copyAndExtend() {
int count = objects.length;
int len =count +(count>>1);//位移的优先级低与加号
Object[] temp = objects;
objects = new Object[len];
for(int i=0;i<count;i++){
if(temp[i]==null)
break;
objects[i]=temp[i];
}
}
/**获取操作
* @param index
* @return
*/
public T get(int index){
if((index>=size)||(index<0))
return null;
return (T) objects[index];
}
/**
* 删除操作
* @param index
* @return
*/
public T remove(int index){
if((index>=size)||(index<0))
return null;
T temp = (T) objects[index];
move(index);
return temp;
}
/**删掉进行位移
* @param index
*/
private void move(int index) {
for(int i=index;i<objects.length;i++){
objects[index]=objects[index+1];
if(objects[index]==null)
break;
}
size--;
}
/**
* 清空操作
*/
public void clear(){
objects = null;
size=0;
}
public boolean isEmpty(){
return size==0;
}
public int size(){
return size;
}
}