问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java中的HashMap,为什么输出竟然是有序的

发布网友 发布时间:2022-04-17 08:53

我来回答

3个回答

懂视网 时间:2022-04-17 13:14

hashmap是无序的,无序是指混乱无规则的状态,无序的种类和特征可以根据晶体结构被破坏的方式和程度来定义,通常的无序现象包括置换无序,取向无序,晶畴无序,拓扑无序等。

  

  HashMap是一种无序的存储结构。HashMap的实现是假定元素是放在一个圆形的环上,每次put进来的元素根据其hashCode计算该元素在圆环上索引,把该元素放到合适的位置。基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

  

  

热心网友 时间:2022-04-17 10:22

你是遇到巧合了吧,例如使用如下代码输出:

public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();
    for (int i = 0; i < 10; i++) {
        map.put(i + "", i + "");
    }
    for (String key : map.keySet()) {
        System.out.println(key);
    }
}

但是你再试试下面这段代码输出就和输入顺序不一致了:

public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();
    for (int i = 8; i < 15; i++) {
        map.put(i + "", i + "");
    }
    for (String key : map.keySet()) {
        System.out.println(key);
    }
}

前面之所以有序是因为这些key通过哈希后也是连续的,遍历时就变成有顺序了。

热心网友 时间:2022-04-17 11:40

HashMap输出的无序的,因为哈希算法存值和取值的时候没有顺序性。 想做到先进先出,之类的顺序。要用 LinkedHashMap 或TreeMap
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如果两个男生喜欢上同一个女生怎么办 玛丽居里学者 玛丽居里奖学金含金量 玛丽居里学者含金量 玛丽居里学者什么级别 豆渣肥料适合什么花 豆渣拌在土里能种花吗-豆渣怎样做肥料好 生物化学和微生物学是一个专业吗 请问这狗狗是什么品种?是不是杂交的啊? ...鉴别下这是啥狗狗?大概三个月不到点。个人感觉像是蝴蝶和土狗... 华为手机可以安装两个微信吗? 华为荣耀30如何一个手机登陆两个微信 是华为的手机都可以同时登录两个微信吗? 如何打开华为荣耀手机的第二个微信 苹果手机怎么把视频做成锁屏 电话一直关机,会提示无法接通吗 手机关机后打过去会不会提示说“暂时无法接通” 手机已经关机了,往这个手机打电话有可能会说暂时无法接通吗? 手机关机后还会出现提示暂时无法接通吗? 手机关机后提示,暂时无法接通 手机关机了, 别的手机给这个已关机的手机打电话有可能出现暂时无法接通吗? 如果对方手机因为没电而自动关机,打过去会提醒关机还是无法接通? 手机关机时提示无法接通是什么原因 手机关机会提示您呼叫的用户暂时无法接通吗 手机关闭会不会是说无法接通?? 手机关机时,可能显示无法接通或不在服务区吗? 关机状态下会不会提醒你拨打的电话暂时无人接听 华为荣耀二十青春版,需要下载什么应用才能无限充? 20能不能无线充电? 小夏机器人网连接不上怎么回事 hashset hashmap是有序的吗? Hashmap在输出时怎么排序 java linkedhashmap有序吗 如何对HashMap中的元素进行排序 arraylist和hashmap的区别 hashMap,Arraylist和set的区别 HashMap输出顺序的问题 java map 先后顺序 c++中map是有序的吗 HashMap 是无序的 为什么用Iterator 迭代出来时每次的顺序都一样 LinkedHashMap到底是有序还是无序 java map元素是否有顺序 HashMap和LinkedHashMapTreeMap的区别 Java中的HashMap加入元素时,是否可以根据自己定义的顺序加入元素得到自己期望的顺序? hashmap如何排序 hashset是无序的,list是有序的,请问这句话是什么意思,怎么理解 JAVA:hashmap根据自定义类型的属性排序 java中hashmap和hashtable的区别 苹果手机屏幕横竖怎么设置 iphone桌面怎么横屏