当前位置: 首页 > 面试题库 >

HashMap应该未排序,但仍根据键排序

郭易安
2023-03-14
问题内容

HashMapJava应该是未排序,但被相对于分类Key

我遇到了这个问题,因为我需要插入顺序数据。因此,我LinkedHashMap改用了。但是我还是很困惑为什么要HashMap对它进行排序。

有人可以解释吗?

我做了一个简单的例子来查看排序。

public static void main(String[] args) {

        HashMap<Integer, String> newHashMap = new HashMap<Integer, String>();
        newHashMap.put(2, "First");
        newHashMap.put(0, "Second");
        newHashMap.put(3, "Third");
        newHashMap.put(1, "Fourth");

        Iterator<Entry<Integer, String>> iterator = newHashMap.entrySet()
                .iterator();
        while (iterator.hasNext()) {

            Map.Entry<Integer, String> entry = iterator.next();
            System.out.println("Key: " + entry.getKey());
            System.out.println("Value: " + entry.getValue());
            iterator.remove();
        }

    }

结果:

Key: 0
Value: Second
Key: 1
Value: Fourth
Key: 2
Value: First
Key: 3
Value: Third

编辑:

我试图插入使用50支随机数RandomJava,我发现了一些数据未排序。但是,它仍然设法对大多数整数进行排序。

随机结果:

...
Key: 36
Value: random
Key: 43
Value: random
Key: 47
Value: random
Key: 44
Value: random
Key: 45
Value: random
...

问题答案:

这是一个巧合(不是真的,而是与哈希算法有关)。

尝试添加

newHashMap.put(-5, "Fifth");

最后。

输出将是

Key: 0
Value: Second
Key: 1
Value: Fourth
Key: 2
Value: First
Key: 3
Value: Third
Key: -5
Value: Fifth

javadoc专门说

此类无法保证地图的顺序。特别是,它不能保证顺序会随着时间的推移保持恒定。



 类似资料:
  • 我有一个,其中的键是字符串。我需要获取这些键并根据键大小(即字符串长度)对其进行排序,然后将其存储在某个中。 注意:如果两个键的大小相同,那么我们可以把它放在任何顺序。 为(如)。

  • 问题内容: 你好,我需要实现一个接收HashMap并按键对它的值进行排序(mergeSort)的方法 (不使用TreeMap,SortedMap或Collections.Sort或使用JAVA Packages中的任何排序解决方案) 。我的问题是处理通配符类型…这是我的实现(由于使用通配符而返回编译错误) 我感谢您的帮助! 问题答案: 像其他评论者一样,我建议您阅读Java中的泛型主题。您在合并中

  • 边走边学Java(Python背景)。简单的单词计数程序在Java7代码(不能用J8!)。 我有一个单词的哈希图:计数对。现在我需要按计数(递减顺序)排序,并打破按字母顺序使用word的联系。 我正在寻找对这个想法的反馈: 遍历HashMap中的映射项(me) 使用me.getkey=K和me.getvalue=v new map.entry reverse_me=(V,K){不确定此语法} 将r

  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 问题内容: 我在Java中具有以下哈希图: 我应该如何对哈希图进行排序,以便考虑字母和数字? 生成的哈希图应如下所示: 感谢帮助! 问题答案: 使用排序: 它将自动放置按键排序的条目。我认为自然排序适合你的情况。 注意,由于查找优化,不会保留顺序。

  • 问题内容: 我试图根据键中的日期对此HashMap进行排序 我的哈希图: 问题答案: 使用代替。正如已经实现的那样,它将在插入时自动排序。 或者,如果您有一个现有的并且想要基于它创建一个,则将其传递给构造函数: 也可以看看: Java教程-地图实现 Java教程-对象排序