2012-10-12 28 views
-1

這是我的問題,因爲我正在編寫比我習慣的更先進的java。所以今天我真的需要你的幫助!如何設置一個限制,當傾斜HashMap?我已經嘗試了一些代碼來限制爲一個。我的問題是,我想從HashMap中的隨機項,但是當我使用這樣的隨機函數:是否有可能使用限制循環HashMap?

Random rand = new Random(); 
int max = list.size(); 
int randomNumber = rand.nextInt(max); 

而問題是,有時它返回「零」。 然後我嘗試這樣的:

Iterator it = list.entrySet().iterator(); 
while (it.hasNext()) { 
if(!stop) 
    Map.Entry pairs = (Map.Entry)it.next(); 
    atm = pairs.getValue(); 
    it.remove(); 
    stop = true; 
} 

但這種崩潰我的程序。那麼,是否有更好的方法來限制這一點?

請帶上例子,它是最好的學習方式。 :)

+0

這將有助於更多地瞭解你的意圖。你爲什麼要遍歷一張地圖?迭代時你將如何處理條目/鍵/值?您的地圖管理哪些類型?你想什麼時候停下來? – Gamb

+0

出於好奇,你爲什麼要隨機輸入?你解決什麼樣的問題? :) –

+0

我正在製作一個測驗程序,其中包含存儲在散列圖中的測驗列表。 :) – hultberg

回答

0

如果你想從您的哈希映射中的隨機項,嘗試這一個班輪:

Map.Entry<K, V> entry = new ArrayList<Map.Entry<K, V>>(map.entrySet()).get(Math.random() * map.size()); 
+0

我會嘗試,thxs。 :) – hultberg

+0

類型ArrayList的參數數量不正確;它不能參數化參數 hultberg

+0

@Edvin oops〜修正錯誤 - 它應該是'ArrayList >'。見編輯的答案。 – Bohemian

0

如果列表爲空,那麼你需要把檢查它像

int max = null != list ? list.size() : 0; 

我希望這是你尋找的

+0

該列表包含內容,但是當我執行我首先寫入的代碼時,有時會返回「null」 – hultberg

相關問題