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

相关文章

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

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的