對於我在Java中設計的問題,我給出了日期列表和中獎彩票號碼。我應該和他們一起做事,然後按順序將他們吐出來。我決定選擇一個LinkedHashMap來解決它,包含日期的Date和包含中獎號碼數組的int []。迭代通過LinkedHashMap值沒有排序?
事情是,當我運行.values()函數時,我注意到數字不再被排序(通過插入)。我正在運行的代碼是:
for(int i = 0; i < 30; i++){ //testing first 30 to see if ordered
System.out.println(Arrays.toString((int [])(winningNumbers.values().toArray()[i])));
}
任何人都可以看到究竟我做錯了什麼?誘使幾乎只使用.get()並遍歷日期,因爲日期按照某種順序進行,但這可能會使得使用LinkedHashMap模擬。在這種情況下,也可以使用2-D ArrayList [] []。提前致謝!
編輯:添加代碼進一步檢查!
彩票類:http://pastebin.com/9ezF5U7e 文本文件:http://pastebin.com/iD8jm7f8
要進行測試,呼叫checkOldLTNums()。只要將它傳遞給任何int []數組,它就不會使用它,至少與這個問題有關。輸出與組織的.txt中的第一行不同。謝謝!
EDIT2:
我想我找到了失敗的原因。我使用了一個較小的.txt文件,並且代碼完美運行。可能是因爲將1900個條目加載到內存中並不明智。我想最好是加載單行並比較它們,而不是一次抓取所有內容。這個邏輯聲音是?任何建議從這裏開始將是有用的。
我很抱歉,我應該更仔細地處理事情。我的問題是,無論如何,它們不會以與插入順序相同的順序顯示。 .values()產生隨機排序的我的地圖,而不是按照插入順序。 – Luiserebii
@Luiserebii嘗試使用'entrySet()'或'keySet()'遍歷'Map'。 –
嗯,只需檢查keySet,並且按鍵也沒有插入順序。任何想法爲什麼這可能發生?我應該在哪裏上傳我的代碼? – Luiserebii