我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