Gos*_*pel 1 java collections performance
我写了一个类来测试arraylist和hashset之间的插入性能,正如我所期望的,hashset插入性能会比arraylist好得多(也许书欺骗了我),但测试结果让我很困惑
HashSet<String> hashSet = new HashSet<String>();
long start = System.currentTimeMillis();
for (int i = 0; i < 900000; i++) {
hashSet.add(String.valueOf(i));
}
System.out.println("Insert HashSet Time: " + (System.currentTimeMillis() - start));
ArrayList<String> arrayList = new ArrayList<String>();
start = System.currentTimeMillis();
for (int i = 0; i < 900000; i++) {
arrayList.add(String.valueOf(i));
}
System.out.println("Insert ArrayList Time: " + (System.currentTimeMillis() - start));
result:
Insert HashSet Time: 978
Insert ArrayList Time: 287
Run Code Online (Sandbox Code Playgroud)
我多次运行这个主要方法,结果与此之间没有更多不同,插入数组列表时间比插入哈希集时间短得多,任何人都可以解释这个奇怪的结果。
哈希集和列表是不同类型的数据结构。因此,在选择之前,您应该考虑一下您想用它们做什么。
哈希集
插入时间较长
元素的快速访问时间
列表
快速追加时间
元素访问时间长
列表速度更快,因为它只能将元素添加到列表末尾,哈希集必须找到插入位置,然后使元素可访问,这比将其添加到列表末尾需要更多工作(时间)。
| 归档时间: |
|
| 查看次数: |
4951 次 |
| 最近记录: |