java - 迭代 LinkedHashMap 值未排序?

标签 java arrays linkedhashmap key-value-store toarray

对于我用 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() 并迭代日期,因为日期确实按某种顺序排列,但这可能会使使用 LinkedHashMap 毫无意义。在这种情况下,不妨使用二维 ArrayList[][]。提前致谢!

编辑:添加代码以供进一步检查!

抽奖类:http://pastebin.com/9ezF5U7e 文本文件:http://pastebin.com/iD8jm7f8

要进行测试,请调用 checkOldLTNums()。只要向它传递任何 int[] 数组,它就不会利用它,至少与这个问题相关。输出与 .txt 中的第一行不同,后者是经过组织的。谢谢!

编辑2:

我想我已经明白为什么失败了。我使用了一个较小的 .txt 文件,代码运行得很好。将 1900 个条目加载到内存中可能并不明智。我认为最好只加载单独的行并比较它们,而不是一次抓取所有内容。这个逻辑合理吗?从这里提出的任何建议都会很有用。

最佳答案

values() 方法将按照插入的顺序返回 Map 的值,这就是的顺序 的意思是,不要将其与排序混淆,这意味着不同的事情 - 项目遵循值的Comparator定义的顺序或其自然顺序,如果未提供比较器。

也许您最好使用 SortedMap 来按键对项目进行排序。总结一下:LinkedHashMap有序的TreeMap排序

关于java - 迭代 LinkedHashMap 值未排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778423/

相关文章:

java - 为什么 ClassLoader.getResource ("/pkg/readme.txt")总是返回 null 且资源名称带有前导斜杠?

java - 找不到符号变量 key1

java - 将 array_walk 从 php 转换为 java 方法

java - 将 LinkedHashMap 转换为复杂对象

java - LinkedHashMap 顺序问题

java - LinkedHashMap 中的 entrySet() 是否也保证顺序?

java - 如何从 Java 中的 ®、©、™ 等字符串中删除高位 ASCII 字符

java - Java 中的线程数是否有硬性限制?

objective-c - 对数组进行排序并保留 Objective-C/swift 中某些元素的原始顺序?

Java 斐波那契系列 - 返回数组中的值