深入淺析ArrayList和LinkedList的執(zhí)行效率比較-創(chuàng)新互聯(lián)

一、概念:

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到尋烏網(wǎng)站設(shè)計(jì)與尋烏網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋尋烏地區(qū)。

    一般我們都知道ArrayList* 由一個(gè)數(shù)組后推得到的 List。作為一個(gè)常規(guī)用途的對(duì)象容器使用,用于替換原先的 Vector。允許我們快速訪問(wèn)元素,但在從列表中部插入和刪除元素時(shí),速度卻嫌稍慢。一般只應(yīng)該用ListIterator 對(duì)一個(gè) ArrayList 進(jìn)行向前和向后遍歷,不要用它刪除和插入元素;與 LinkedList 相比,它的效率要低許多LinkedList 提供優(yōu)化的順序訪問(wèn)性能,同時(shí)可以高效率地在列表中部進(jìn)行插入和刪除操作。但在進(jìn)行隨機(jī)訪問(wèn)時(shí),速度卻相當(dāng)慢,此時(shí)應(yīng)換用 ArrayList。

二、測(cè)試

    本來(lái)自己寫(xiě)了一些測(cè)試類(lèi)想測(cè)試下ArrayList和LinkedList的性能比較,發(fā)現(xiàn)怎么寫(xiě)都差強(qiáng)人意,今天在《Thinking in Java》中看到了這樣的一段代碼,個(gè)人覺(jué)得寫(xiě)得不賴(lài)。

public class ListPerformance
{
 private static final int REPS = 100;
 private abstract static class Tester//內(nèi)部抽象類(lèi),作為L(zhǎng)ist測(cè)試。
 {
  String name;
  int size;
  Tester(String name, int size)
  {
   this.name = name;
   this.size = size;
  }
  abstract void test(List a);
 }
 private static Tester[] tests = {new Tester("get", 300)//一個(gè)測(cè)試數(shù)組,存儲(chǔ)get(隨機(jī)取)、iteration(順序遍歷)、insert(中間插入)、remove(隨機(jī)刪除)
 {
  void test(List a)
  {
   for (int i = 0; i < REPS; i++) {
    for (int j = 0; j < a.size(); j++) {
     a.get(j);
    }
   }
  }
 }, new Tester("iteration", 300)
 {
  void test(List a)
  {
   for (int i = 0; i < REPS; i++) {
    Iterator it = a.iterator();
    while (it.hasNext()) it.next();
   }
  }
 }, new Tester("insert", 1000)
 {
  void test(List a)
  {
   int half = a.size() / 2;
   String s = "test";
   ListIterator it = a.listIterator(half);
   for (int i = 0; i < size * 10; i++) {
    it.add(s);
   }
  }
 }, new Tester("remove", 5000)
 {
  void test(List a)
  {
   ListIterator it = a.listIterator(3);
   while (it.hasNext()) {
    it.next();
    it.remove();
   }
  }
 },
          };
 public static void test(List a)
 {
  System.out.println("Testing " + a.getClass().getName());//輸出測(cè)試的類(lèi)名稱(chēng)
  for (int i = 0; i < tests.length; i++) {
   fill(a, tests[i].size);//填充空集合
   System.out.print(tests[i].name);
   long t1 = System.currentTimeMillis();
   tests[i].test(a);//進(jìn)行測(cè)試
   long t2 = System.currentTimeMillis();
   System.out.print(":" + (t2 - t1)+" ms ");
  }
 }
 public static Collection fill(Collection c, int size)
 {
  for (int i = 0; i < size; i++) {
   c.add(Integer.toString(i));
  }
  return c;
 }
 public static void main(String[] args)
 {
  test(new ArrayList());
  System.out.println();
  test(new LinkedList());
 }
}

分享題目:深入淺析ArrayList和LinkedList的執(zhí)行效率比較-創(chuàng)新互聯(lián)
URL分享:http://www.muchs.cn/article48/dppohp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、App設(shè)計(jì)網(wǎng)站營(yíng)銷(xiāo)、App開(kāi)發(fā)、網(wǎng)站排名面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)