官术网_书友最值得收藏!

謬誤19 恰恰相反——頻繁查詢數(shù)組比HashMap快

很多程序員認(rèn)為,在進(jìn)行數(shù)據(jù)的頻繁查詢時(shí),二維數(shù)組比HashMap速度快,其實(shí)這種說法是錯誤的,接下來通過兩個示例進(jìn)行說明。

示例:

    public class FromArrayQuery {
      public static void main (String[] args) {
          String[][] arr = new String[1024*250][2] ;          // 創(chuàng)建字符串?dāng)?shù)組
          for (int i = 0; i < 1024*250; i++){
            arr[i][0] = String.valueOf(i);                    // 在數(shù)組中存儲數(shù)據(jù)
            arr[i][1] = String.valueOf(i);                    // 在數(shù)組中存儲數(shù)據(jù)
          }
          long startTime = System.currentTimeMillis();
          // 獲得執(zhí)行for循環(huán)之前的當(dāng)前時(shí)間,單位為毫秒
          for (int i = 0; i < 1024*250; i++){
            if (arr[i][0]. equals (String.valueOf(1024*250 - 1))){// 查詢滿足條件的元素
                System.out. println ("從數(shù)組中查詢到:"+arr[i][0]);   // 輸出查詢結(jié)果
            }
          }
          long endTime = System.currentTimeMillis();      // 獲得執(zhí)行for循環(huán)之后的當(dāng)前時(shí)間
          long useTime = endTime - startTime;             // 計(jì)算出執(zhí)行for循環(huán)所用的時(shí)間
          System.out. println ("查詢用時(shí)為:"+useTime);
      }
    }

運(yùn)行本示例,效果如圖4.19所示。

圖4.19 從數(shù)組中查詢需要的時(shí)間

示例:

    import java. util. HashMap;
    public class FromHashMapQuery {
      public static void main (String[] args) {
          HashMap<String, String> map = new HashMap<String, String>();
          // 創(chuàng)建HashMap對象
          for (int i = 0; i < 1024*500; i++){
            map. put (String.valueOf(i), String.valueOf(i));     // 在HashMap中存儲數(shù)據(jù)
          }
          long startTime = System.currentTimeMillis();
          // 獲得執(zhí)行for循環(huán)之前的當(dāng)前時(shí)間,單位為毫秒
          String qResult = map. get (String.valueOf(1024*250-1));
          // 從HashMap中查詢指定鍵的值
          System.out. println ("從HashMap中查詢到:"+qResult) ;  // 輸出查詢結(jié)果
          long endTime = System.currentTimeMillis() ; // 獲得執(zhí)行for循環(huán)之后的當(dāng)前時(shí)間
          long useTime = endTime - startTime;         // 計(jì)算出執(zhí)行for循環(huán)所用的時(shí)間
          System.out. println ("查詢用時(shí)為:"+useTime);
      }
    }

運(yùn)行本示例,效果如圖4.20所示。

圖4.20 從HashMap中查詢需要的時(shí)間

說明

從如圖4.19和圖4.20所示的輸出結(jié)果可以看出,從存儲元素個數(shù)相同的數(shù)組和HashMap中查詢數(shù)據(jù),HashMap要比數(shù)組快,因此要頻繁地查詢數(shù)據(jù),應(yīng)該使用HashMap,而不要使用數(shù)組。

主站蜘蛛池模板: 资源县| 松潘县| 芜湖县| 陕西省| 双峰县| 灯塔市| 临汾市| 武陟县| 永德县| 元朗区| 化德县| 余姚市| 泰宁县| 大同市| 皮山县| 遂平县| 科技| 神农架林区| 南安市| 黄大仙区| 宣化县| 扬中市| 河源市| 益阳市| 延边| 孙吴县| 遂溪县| 个旧市| 门源| 嘉荫县| 永定县| 罗定市| 蕲春县| 山东| 株洲县| 长宁县| 合阳县| 砚山县| 瓦房店市| 花莲市| 沐川县|