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

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push