对于我在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