Java开发之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

谬误18 恰恰相反——存储数据HashMap比数组快

很多程序员认为存储相同的数据,HashMap 比二维数组速度快,其实这种说法是错误的,接下来通过两个示例进行说明。

示例:

    public class SaveToArray {
      public static void main (String[] args) {
          String[][] arr = new String[1024*250][2];       // 创建字符串数组
          long startTime = System.currentTimeMillis();
          // 获得执行for循环之前的当前时间,单位为毫秒
          for (int i = 0; i < 1024*250; i++){
            arr[i][0] = String.valueOf(i);                // 在数组中存储数据
            arr[i][1] = String.valueOf(i);                // 在数组中存储数据
          }
          long endTime = System.currentTimeMillis();      // 获得执行for循环之后的当前时间
          long useTime = endTime - startTime;             // 计算出执行for循环所用的时间
          System.out. println (useTime);
      }
    }

运行本示例,效果如图4.17所示。

图4.17 数组存储数据需要的时间

示例:

    import java. util. HashMap;
    public class SaveToHashMap {
      public static void main (String[] args) {
          HashMap<String, String> map = new HashMap<String, String>(); // 创建HashMap对象
          long startTime = System.currentTimeMillis();
          // 获得执行for循环之前的当前时间,单位为毫秒
          for (int i = 0; i < 1024*500; i++){
            map. put (String.valueOf(i), String.valueOf(i));  // 在HashMap中存储数据
          }
          long endTime = System. currentTimeMillis ();       // 获得执行for循环之后的当前时间
          long useTime = endTime - startTime;              // 计算出执行for循环所用的时间
          System.out. println (useTime);
      }
    }

运行本示例,效果如图4.18所示。

图4.18 HashMap存储数据需要的时间

说明

从如图4.17和图4.18所示的输出结果可以看出,存储相同的数据,数组要比HashMap快得多,因此存储数据HashMap比数组快的说法是错误的。