上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比数组快的说法是错误的。