测试方法
:对美中遍历方法,都使用100,10000,100000规模的数据,从小规模到大规模进行遍历测试,使用System.nanoTime()获得遍历前后的时间,相减得到遍历的时间,将时间输入到文件中,每种遍历进行3次,取平均值,绘制图表。
测试用代码:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.math.*;
import java.security.KeyStore.Entry;
class test
{
public static void main(String args[])
{
test t1=new test();
t1.testlist();
t1.testlink();
t1.testhash();
t1.testtreeset();
t1.testhashmap();
t1.testtreemap();
t1.testhashmap();
}
void random(ArrayList<String> list,int n)
{
for(int i=1;i<=n;i++)
{
list.add(String.valueOf(Math.random()));
}
}
void testlist()
{
{
ArrayList<String> list=new ArrayList<String>();
int number=100;
random(list,number);
try
{
FileWriter f=new FileWriter("datalist.txt");
BufferedWriter file=new BufferedWriter(f);
long startTime=System.nanoTime();
for(int i=0;i<=list.size()-1;i++)
{
String str=list.get(i);
for(int k=1;k<=10;k++)
{}
}
long endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
startTime=System.nanoTime();
for(String str:list)
{
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
Iterator<String> it = list.iterator();
startTime=System.nanoTime();
while(it.hasNext())
{
String str=it.next();
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
random(list,9900);
startTime=System.nanoTime();
for(int i=0;i<=list.size()-1;i++)
{
String str=list.get(i);
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
startTime=System.nanoTime();
for(String str:list)
{
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
it = list.iterator();
startTime=System.nanoTime();
while(it.hasNext())
{
String str=it.next();
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
random(list,99900);
startTime=System.nanoTime();
for(int i=0;i<=list.size()-1;i++)
{
String str=list.get(i);
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
startTime=System.nanoTime();
for(String str:list)
{
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
it = list.iterator();
startTime=System.nanoTime();
while(it.hasNext())
{
String str=it.next();
for(int k=1;k<=10;k++)
{}
}
endTime=System.nanoTime();
file.write(String.valueOf(endTime-startTime)+"\n");
file.close();
f.close();
}
catch(Exception ex){ex.printStackTrace();}
}
}
void randomlink(LinkedList<String> list,int n)
{
for(int i=1;i<=n;i++)
{
list.add(String.valueOf(Math.random()));
}
}
void testlink()
{
LinkedList<String