2011-08-18 87 views
0

我有一個哈希表,其中包含例如字符串,當我使用put方法如下哈希值重新排序

hashtable.put("1","A"); 
hashtable.put("1","B"); 
hashtable.put("1","C"); 
hashtable.put("1","D"); 
hashtable.put("1","E"); 

然後,當我嘗試打印它回到它不相同的順序打印,任何一個知道爲什麼會發生這樣的事情?

Collection c = ht.values(); 
Iterator itr = c.iterator(); 
while(itr.hasNext()) 
System.out.println(itr.next()); 

感謝 最大

+1

我不認爲你的意思是對所有條目使用相同的密鑰... –

回答

3

你應該使用LinkedHashMap,如果你要打印,以便項目。

+0

+1因爲我不知道那個類。謝謝 – DeyyyFF

2

這就是哈希表的屬性 - 它不保證排序。你想用LinkedHashMap代替嗎?

1

HashTable不保留order.It將隨機打印。您應該去LinkedHashMap.You可以使用LinkedHashMap的方式與您爲HashMap所做的相同。只需將LinkedHashMap放置在HashMap的位置.LinkedHashMap保留其中的數據順序你進入它。

+2

(嚴格地說,HashTable或HashMap的元素的排序不是隨機的,對於給定的一組鍵(和散列碼)和給定的插入順序,您將得到相同的條目順序。排序通常很難預測,並且看起來可能是隨機的。) –

4

A Hashtable不是保證任何種類的訂購。

如果要保留廣告訂單,請使用LinkedHashMap。但是,合同與Hashtable略有不同,因爲它允許空元素。