2012-11-16 40 views
0

給定數組列表和Hashmap。Arraylist或HashMap用於在保留唯一性的同時添加隨機整數

而且我要隨機整數添加到該collection.While添加必須檢查 值是否已輸入not.If是的,它應該返回true,不應該添加到集合,或值應爲 所以哪一個集合是最好的?說明。現在

,它是曖昧怎麼整數單獨將被添加到HashMap的或有什麼鍵值對這裏如果我們要添加到HashMap的?不過這是質疑問面試,需要給予

一個答案
+0

你對這些增加的整數做什麼? – amn

回答

0

你可以簡單地使用ArrayList添加值,也可以加入他們之前監測值,例如:

List list = new ArrayList(); 

if (list.contains(whatever)) { 
System.out.println("do something"); 
} else { 
    } 

您還可以使用HashMap來這樣做,但隨後這取決於要求,因爲根據問題你想要輸入什麼密碼

+1

但請注意,使用未排序的數組進行此操作將具有O(n^2)複雜性。對於有排序的數組,成員檢查是O(log n),但每次插入都是O(n),所以你沒有太多好處(雖然常數因子可能更小)。 – delnan

0

您可以簡單地使用Collection#contains(...)

0

對於這個特定的問題,我建議使用HashMap,只是因爲它在本地檢查重複值而不必做任何事情。

如果你使用了一個ArrayList,你需要檢查'indexOf',如果之前已經添加了整數,這就需要搜索整個數組。

此外,哈希表按鍵排序,這使得搜索效率。

1

使用Set,它需要照顧唯一的條目:

Set<Integer> set = new HashSet<Integer>(); 
//... 
int randomNumber = ... 
boolean unique = set.add(randomNumber); 
if (unique) { 
    System.out.println(randomNumber + " was added to set"); 
} else { 
    System.out.println(randomNumber + " already was in set"); 
} 
+0

Set不是一個選項,只有數組列表或散列表 – user1830555

0

我會認爲這是一個技巧問題,如果在面試中給出這個問題......如果添加的項目的順序很重要,那麼使用LinkedHashSet ,否則使用HashSet ...