私が Java で設計している問題では、日付と宝くじの当選番号のリストが与えられます。私はそれらを処理し、順番に吐き出すことになっています。それを解決するために、LinkedHashMap、日付を含む Date、および当選番号の配列を含む int[] を選択することにしました。
問題は、.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() を使用して日付を反復処理するようにほとんど誘惑されますが、これは日付がある順序で行われるためです。その場合、2-D ArrayList[][] を使用することもできます。前もって感謝します!
編集: さらに調べるためのコードを追加!
宝くじクラス: http://pastebin.com/9ezF5U7e テキストファイル: http://pastebin.com/iD8jm7f8
テストするには、checkOldLTNums() を呼び出します。int[] 配列を渡すだけで、少なくともこの問題に関連して、それを利用しません。出力は、整理された .txt の最初の行とは異なります。ありがとう!
EDIT2:
失敗する理由がわかった気がします。小さい .txt ファイルを使用したところ、コードは完全に機能しました。1900 個のエントリをメモリにロードするのは賢明ではないかもしれません。一度にすべてを取得するのではなく、個々の行をロードして比較する方が良いと思います。この論理は健全ですか?ここからのアドバイスは役に立ちます。