HashMap前后顺序put的数值教训总结

2024-06-09 19:08

本文主要是介绍HashMap前后顺序put的数值教训总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、层级结构是Map<Object,Map<o,list>>需要进行排序

使用HashMap赋值,最前面的放在前面put,后面的不需要展示的放在后面put,理论上是可以有顺序的,可是结果并不是这样:


public class ReflectTest {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {test2();}public  static  void  test2(){HashMap<String ,String> old=new HashMap();HashMap<String ,String>  newHash=new HashMap();HashMap newOrderHash=new HashMap();old.put("1","1");old.put("2","2");old.put("3","3");old.put("4","4");
//        newHash.put("5","5");
//        newHash.put("3","5555555555555");
//        newHash.put("6","6");
//        newHash.put("7","7");newHash.put("3","323333");newHash.put("4","44444444");newHash.putAll(old);System.out.println("newHash:"  +"   value:" );for (String  key:newHash.keySet()){System.out.println("key:" +key+"   value:" +newHash.get(key));}old.putAll(newHash);System.out.println("old" );for (String  key:old.keySet()){System.out.println("key:" +key+"    value:" +old.get(key));}}/****  结论D:\root\JDK8\bin\java.exe "-javaagent: newHash:   value:key:1   value:1key:2   value:2key:3   value:3key:4   value:4oldkey:1    value:1key:2    value:2key:3    value:3key:4    value:4*/

也就是说putALL并不会把原来的数值覆盖掉

2、现在的HashMap会对put数值进行重新排序


public class ReflectTest {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {test2();}public  static  void  test2(){HashMap<String ,String> old=new HashMap();HashMap<String ,String>  newHash=new HashMap();HashMap<String ,String>  newOrderHash=new HashMap();old.put("1","1");old.put("2","2");old.put("3","3");old.put("4","4");newHash.put("5","5");newHash.put("3","5555555555555");newHash.put("6","6");newHash.put("7","7");newHash.put("1","3233333333333");newHash.put("4","4444444444444");System.out.println("-------------如何重新排序--------------" );for (String  key:old.keySet()){if(newHash.containsKey(key)){newOrderHash.put(key,newHash.get(key));}}for (String  key:newOrderHash.keySet()){System.out.println("key:" +key+"    value:" +newOrderHash.get(key));}System.out.println("-------------重新排序--------------" );for (String  key:old.keySet()){newOrderHash.putIfAbsent(key,old.get(key));}for (String  key:newOrderHash.keySet()){System.out.println("key:" +key+"    value:" +newOrderHash.get(key));}}/****  结论-------------如何重新排序--------------key:1    value:3233333333333key:3    value:5555555555555key:4    value:4444444444444-------------重新排序--------------key:1    value:3233333333333key:2    value:2key:3    value:5555555555555key:4    value:4444444444444Process finished with exit code 0*/

3、即使乱序,目前HashMap依然会对put数值进行排序整理

 

public class ReflectTest {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {test2();}public  static  void  test2(){HashMap<String ,String> old=new HashMap();HashMap<String ,String>  newHash=new HashMap();HashMap<String ,String>  newOrderHash=new HashMap();old.put("3","3");old.put("4","4");old.put("1","1");old.put("2","2");newHash.put("5","5");newHash.put("3","5555555555555");newHash.put("6","6");newHash.put("7","7");newHash.put("1","3233333333333");newHash.put("4","4444444444444");System.out.println("-------------如何重新排序--------------" );for (String  key:old.keySet()){if(newHash.containsKey(key)){newOrderHash.put(key,newHash.get(key));}}for (String  key:newOrderHash.keySet()){System.out.println("key:" +key+"    value:" +newOrderHash.get(key));}System.out.println("-------------重新排序--------------" );for (String  key:old.keySet()){newOrderHash.putIfAbsent(key,old.get(key));}for (String  key:newOrderHash.keySet()){System.out.println("key:" +key+"    value:" +newOrderHash.get(key));}}/****  结论-------------如何重新排序--------------key:1    value:3233333333333key:3    value:5555555555555key:4    value:4444444444444-------------重新排序--------------key:1    value:3233333333333key:2    value:2key:3    value:5555555555555key:4    value:4444444444444Process finished with exit code 0*/

4、教训总结是:HashMap依旧会对key值进行排序

public class ReflectTest {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {test2();}public  static  void  test2(){HashMap<String ,String>  newHash=new HashMap();newHash.put("1","1");newHash.put("2","2");newHash.put("7","7");newHash.put("8","3233333333333");newHash.put("5","5");newHash.put("3","5555555555555");newHash.put("6","6");newHash.put("4","4444444444444");System.out.println("-------------如何重新排序--------------" );for (String  key:newHash.keySet()){System.out.println("key:" +key+"    value:" +newHash.get(key));}}/***-------------如何重新排序--------------key:1    value:1key:2    value:2key:3    value:5555555555555key:4    value:4444444444444key:5    value:5key:6    value:6key:7    value:7key:8    value:3233333333333Process finished with exit code 0*/

 

这篇关于HashMap前后顺序put的数值教训总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046044

相关文章

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

MySQL中SQL的执行顺序详解

《MySQL中SQL的执行顺序详解》:本文主要介绍MySQL中SQL的执行顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql中SQL的执行顺序SQL执行顺序MySQL的执行顺序SELECT语句定义SELECT语句执行顺序总结MySQL中SQL的执行顺序

Java遍历HashMap的6种常见方式

《Java遍历HashMap的6种常见方式》这篇文章主要给大家介绍了关于Java遍历HashMap的6种常见方式,方法包括使用keySet()、entrySet()、forEach()、迭代器以及分别... 目录1,使用 keySet() 遍历键,再通过键获取值2,使用 entrySet() 遍历键值对3,

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA