package com;
import java.util.ArrayList;
/**
* 线性表循序储存结构
* @author Hadoop
*
*/
public class LinearTable {
Object data[];
int length;
LinearTable(int size){
data=new Object[size];
}
public Object getElem(int i){
if(i>=data.length){
throw new IndexOutOfBoundsException("Index: "+i+", Size: "+length);
}
return data[i];
}
public void listInsert(Object obj){
if(length==data.length){
throw new coveredException("list is covered !");
}
data[length]=obj;
length++;
}
public void listInsert(Object obj,int i){
if(length==data.length){
throw new coveredException("list is covered !");
}else if(i==0||i>=data.length){
throw new IndexOutOfBoundsException("Index: "+i+", Size: "+length);
}
if(i>length){
data[length]=obj;
}else{ /*当插队时*/
for(int k=length-1;k>=i-1;k--)
data[k+1]=data[k];
data[i]=obj;
}
length++;
}
public void listRrmove(int i){
if(i>=length){
throw new IndexOutOfBoundsException("Index: "+i+", Size: "+length);
}
for(int k=i;k<length;k++)
data[k-1]=data[k];
length--;
}
class coveredException extends RuntimeException {
private static final long serialVersionUID = -8592932922491718079L;
public coveredException() {
super();
}
public coveredException(String s) {
super(s);
}
}
/**
*
* @param args
*/
public static void main(String[] args) {
int size=1000000;
LinearTable t=new LinearTable(size);
long LinearTableT=System.currentTimeMillis();
for(int i=0;i<size;i++){
t.listInsert(i);
}
long LinearTableTEnd=System.currentTimeMillis();
long LinearTablef=System.currentTimeMillis();
for(int i=0;i<size;i++){
t.getElem(i);
}
long LinearTablefEnd=System.currentTimeMillis();
long arrayListT=System.currentTimeMillis();
ArrayList arrayList=new ArrayList();
for(int i=0;i<size;i++)
arrayList.add(i);
long arrayListTEnd=System.currentTimeMillis();
long arrayListf=System.currentTimeMillis();
for(int i=0;i<size;i++){
arrayList.get(i);
}
long arrayListfend=System.currentTimeMillis();
long LinearTableAdd=LinearTableTEnd-LinearTableT;
long arrayListAdd=arrayListTEnd-arrayListT;
long LinearTablefor=LinearTablefEnd-LinearTablef;
long arrayListfor=arrayListfend-arrayListf;
System.out.println("listadd:"+arrayListAdd+" LinearTable:"+LinearTableAdd);
System.out.println("listfor:"+arrayListfor+" LinearTable:"+LinearTablefor);
// listadd:115 LinearTable:59
// listfor:5 LinearTable:4
}
}