我WIRTE类测试的ArrayList和HashSet的之间的插入性能,如我所料,HashSet中插入性能会比ArrayList的好很多(也许这本书欺骗了我),但测试结果让我很困惑ArrayList和HashSet的插入性能测试结果让我困惑
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
我运行这个主梅托德很多次,结果没有这个之间有更多的不同,插入ArrayList的时间比插入HashSet的时间 任何人可以解释这个怪异的结果要短得多。
可能会有字符串缓存进行字符串。例如。花费时间为HashSet创建字符串,然后在ArrayList中对其进行缓存和重用。如果您颠倒顺序,您会得到什么结果(例如,先填充ArrayList,再填充HashSet第二个)? – 2013-02-25 15:22:27