比擬Java數組和各類List的機能小結。本站提示廣大學習愛好者:(比擬Java數組和各類List的機能小結)文章只能為提供參考,不一定能成為您想要的結果。以下是比擬Java數組和各類List的機能小結正文
話不多說,直接看示例代碼
package cn.lion.test;
public class PerformanceTest {
privatestatic final int SIZE =100000;
publicstatic abstract class Test{
privateString operation;
publicTest(String operation){
this.operation= operation;
}
publicabstract void test(List<String> list);
publicString getOperation(){
returnoperation;
}
}
//履行迭代操作的匿名類
staticTest iterateTest = new Test("iterate"){
publicvoid test(List<String> list){
for(inti=0; i<10; i++){
Iterator<String>it = list.iterator();
while(it.hasNext()){
it.next();
}
}
}
};
//履行隨機拜訪的匿名類
staticTest getTest = new Test("get"){
publicvoid test(List<String> list){
for(inti=0; i<list.size(); i++){
for(intk=0; k<10; k++){
list.get(k);
}
}
}
};
//履行拔出的匿名類
staticTest insertTest = new Test("insert"){
publicvoid test(List<String> list){
ListIterator<String>it = list.listIterator(list.size()/2);
for(inti=0; i<SIZE; i++){
it.add("lion");
}
}
};
//履行刪除的匿名類
staticTest removeTest = new Test("remove"){
publicvoid test(List<String> list){
ListIterator<String>it = list.listIterator();
while(it.hasNext()){
it.next();
it.remove();
}
}
};
staticpublic void testArray(List<String> list){
Test[]tests = {iterateTest, getTest};
test(tests,list);
}
staticpublic void testList(List<String> list){
Test[]tests = {insertTest, iterateTest, getTest, removeTest};
test(tests,list);
}
staticpublic void test(Test[] tests, List<String> list){
for(inti=0; i<tests.length; i++){
System.out.print(tests[i].getOperation()+ "操作:");
longt1 = System.currentTimeMillis();
tests[i].test(list);
longt2 = System.currentTimeMillis();
System.out.print(t2-t1+ "ms");
System.out.println();
}
}
publicstatic void main(String[] args){
List<String>list = null;
//測試數組的迭代和隨機拜訪操作
System.out.println("------測試數組------");
String[]tstr = new String[SIZE];
Arrays.fill(tstr,"lion");
list= Arrays.asList(tstr);
testArray(list);
tstr= new String[SIZE/2];
Collection<String>coll = Arrays.asList(tstr);
//測試Vector
System.out.println("------測試Vector------");
list= new Vector<String>();
list.addAll(coll);
testList(list);
//測試LinkedList
System.out.println("------測試LinkedList------");
list= new LinkedList<String>();
list.addAll(coll);
testList(list);
//測試ArrayList
System.out.println("------測試Vector------");
list= new ArrayList<String>();
list.addAll(coll);
testList(list);
}
}
運轉成果如圖
從成果可以看出,對數組停止隨機拜訪和迭代操作的速度是最快的;對LinkedList停止拔出和刪除操作的速度是最快的;對ArrayList停止隨機拜訪的速度也很快;Vector類在各方面沒有凸起的機能,且此類已不倡導應用了。
總結
以上就是本文的全體內容,願望對年夜家進修或許應用Java能有所贊助。假如有疑問可以留言評論辯論。