package com.tongji.szx.base;
import com.tongji.szx.baseDao.ListInterface;
public class ExtendList<T> implements ListInterface<T>{
private T[] entry;
private int length;
private int capacity;
private static final int BASE_LENGTH=10;
/**
* 默认的构造函数
*/
public ExtendList(){
this(BASE_LENGTH);
}
@SuppressWarnings("unchecked")
/**
* 提供一个初始链表长度的构造函数
*/
public ExtendList(int intLength){
if(intLength>0){
this.length=intLength;
this.capacity=intLength;
entry=(T[])new Object[intLength];
}else{
this.length=BASE_LENGTH;
this.capacity=BASE_LENGTH;
entry=(T[])new Object[BASE_LENGTH];
}
}
@Override
/**
* 在链表的末尾插入元素
*/
public boolean add(T anEntry) {
// TODO Auto-generated method stub
try{
if(length==capacity){
copyEntry();
}
entry[length]=anEntry;
length++;
return true;
}catch(Exception e){
return false;
}
}
@SuppressWarnings("unchecked")
private void copyEntry(){
T[] newEntry=entry;
this.capacity*=2;
entry=(T[])new Object[this.capacity];
for(int index=0;index<newEntry.length;++index){
entry[index]=newEntry[index];
}
}
@Override
public boolean add(int index, T anEntry) {
// TODO Auto-generated method stub
try{
while(index>=capacity){
copyEntry();
}
if(index<length){
moveEntry(index,anEntry);
length++;
return true;
}else{
entry[index]=anEntry;
//length+=(index);
int sub=index-length+1;
length+=sub;
return true;
}
}catch(Exception e){
return false;
}
//return false;
}
/**
* 当插入位置在length之前时移动元素
* @param index
* @param anEntry
*/
责任编辑:小草