我有一個從0到數組長度的數組,除了一些數字丟失,我必須找到它。整數長時間的HashMap
public static Integer findNumber(Integer[] array){
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(Integer number : array){
map.put(number, 1);
}
for(Integer i=0; i<array.length; i++){
if(map.get(i)==null)
return i;
}
return -1;
}
我認爲這是要成爲一個很好的解決方案,但將需要很長的時間,整理與統計重複的解決方案是快了很多,我不知道爲什麼。整數散列是Integer本身,所以在計算散列時甚至沒有時間浪費,也沒有用等號進行迭代(這取決於數字,我選擇了只有一個副本的例子)。我覺得我在這裏錯過了一些明顯的東西。我試着指定初始容量和負載因數,但這隻會讓事情變得更糟。我能以某種方式優化它嗎?
這需要花費大量的時間,而不是迭代尋找解決方案,就像95%的執行時間。
由於很多拳擊/拆箱發生,速度會變慢嗎? – kaqqao
一套比地圖稍快。 –
我也這麼認爲,我從原始整數開始,然後改爲整數,根本沒有任何改變。我認爲即使它讓事情變得更慢,它也不會讓它們變得更慢。 – Haratino