給定數組列表和Hashmap。Arraylist或HashMap用於在保留唯一性的同時添加隨機整數
而且我要隨機整數添加到該collection.While添加必須檢查 值是否已輸入not.If是的,它應該返回true,不應該添加到集合,或值應爲 所以哪一個集合是最好的?說明。現在
,它是曖昧怎麼整數單獨將被添加到HashMap的或有什麼鍵值對這裏如果我們要添加到HashMap的?不過這是質疑問面試,需要給予
一個答案給定數組列表和Hashmap。Arraylist或HashMap用於在保留唯一性的同時添加隨機整數
而且我要隨機整數添加到該collection.While添加必須檢查 值是否已輸入not.If是的,它應該返回true,不應該添加到集合,或值應爲 所以哪一個集合是最好的?說明。現在
,它是曖昧怎麼整數單獨將被添加到HashMap的或有什麼鍵值對這裏如果我們要添加到HashMap的?不過這是質疑問面試,需要給予
一個答案你可以簡單地使用ArrayList添加值,也可以加入他們之前監測值,例如:
List list = new ArrayList();
if (list.contains(whatever)) {
System.out.println("do something");
} else {
}
您還可以使用HashMap來這樣做,但隨後這取決於要求,因爲根據問題你想要輸入什麼密碼
但請注意,使用未排序的數組進行此操作將具有O(n^2)複雜性。對於有排序的數組,成員檢查是O(log n),但每次插入都是O(n),所以你沒有太多好處(雖然常數因子可能更小)。 – delnan
您可以簡單地使用Collection#contains(...)
。
對於這個特定的問題,我建議使用HashMap,只是因爲它在本地檢查重複值而不必做任何事情。
如果你使用了一個ArrayList,你需要檢查'indexOf',如果之前已經添加了整數,這就需要搜索整個數組。
此外,哈希表按鍵排序,這使得搜索效率。
使用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");
}
Set不是一個選項,只有數組列表或散列表 – user1830555
我會認爲這是一個技巧問題,如果在面試中給出這個問題......如果添加的項目的順序很重要,那麼使用LinkedHashSet ,否則使用HashSet ...
你對這些增加的整數做什麼? – amn