比較Java數(shù)組和各種List的性能小結(jié)
話(huà)不多說(shuō),直接看示例代碼
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;
}
}
//執(zhí)行迭代操作的匿名類(lèi)
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();
}
}
}
};
//執(zhí)行隨機(jī)訪(fǎng)問(wèn)的匿名類(lèi)
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);
}
}
}
};
//執(zhí)行插入的匿名類(lèi)
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");
}
}
};
//執(zhí)行刪除的匿名類(lèi)
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;
//測(cè)試數(shù)組的迭代和隨機(jī)訪(fǎng)問(wèn)操作
System.out.println("------測(cè)試數(shù)組------");
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);
//測(cè)試Vector
System.out.println("------測(cè)試Vector------");
list= new Vector<String>();
list.addAll(coll);
testList(list);
//測(cè)試LinkedList
System.out.println("------測(cè)試LinkedList------");
list= new LinkedList<String>();
list.addAll(coll);
testList(list);
//測(cè)試ArrayList
System.out.println("------測(cè)試Vector------");
list= new ArrayList<String>();
list.addAll(coll);
testList(list);
}
}
運(yùn)行結(jié)果如圖

從結(jié)果可以看出,對(duì)數(shù)組進(jìn)行隨機(jī)訪(fǎng)問(wèn)和迭代操作的速度是最快的;對(duì)LinkedList進(jìn)行插入和刪除操作的速度是最快的;對(duì)ArrayList進(jìn)行隨機(jī)訪(fǎng)問(wèn)的速度也很快;Vector類(lèi)在各方面沒(méi)有突出的性能,且此類(lèi)已不提倡使用了。
總結(jié)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)或者使用Java能有所幫助。如果有疑問(wèn)可以留言討論。
相關(guān)文章
SpringBoot實(shí)現(xiàn)異步消息處理的代碼示例
在現(xiàn)代應(yīng)用程序中,異步消息處理是一項(xiàng)至關(guān)重要的任務(wù)。它可以提高應(yīng)用程序的性能、可伸縮性和可靠性,同時(shí)也可以提供更好的用戶(hù)體驗(yàn),本文將介紹如何使用Spring Boot實(shí)現(xiàn)異步消息處理,并提供相應(yīng)的代碼示例2023-06-06
Java基本類(lèi)型和包裝類(lèi)型的區(qū)別
這篇文章主要介紹了Java基本類(lèi)型和包裝類(lèi)型的區(qū)別,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下2020-09-09
java配置dbcp連接池(數(shù)據(jù)庫(kù)連接池)示例分享
java配置dbcp連接池示例分享,大家參考使用吧2013-12-12
詳解@ConditionalOnMissingBean注解的作用
這篇文章主要介紹了詳解@ConditionalOnMissingBean注解的作用,@ConditionalOnMissingBean,它是修飾bean的一個(gè)注解,主要實(shí)現(xiàn)的是,當(dāng)你的bean被注冊(cè)之后,如果而注冊(cè)相同類(lèi)型的bean,就不會(huì)成功,它會(huì)保證你的bean只有一個(gè),需要的朋友可以參考下2023-10-10
Java使用Sftp和Ftp實(shí)現(xiàn)對(duì)文件的上傳和下載
這篇文章主要介紹了Java使用Sftp和Ftp實(shí)現(xiàn)對(duì)文件的上傳和下載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù)
這篇文章主要介紹了基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié),其中多線(xiàn)程并發(fā)的實(shí)現(xiàn)方式尤為exciting,需要的朋友可以參考下2015-11-11
關(guān)于java String中intern的深入講解
這篇文章主要給大家介紹了關(guān)于java String中intern的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

