关于HaspMap存放顺序的解决问题

2024-06-03 22:08

本文主要是介绍关于HaspMap存放顺序的解决问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在做一个项目时,有一个程序需要通过HaspMap来传递参数,而且接收参数的方法对Map中的参数顺序敏感。

所以一开始调试的时候没有注意到HashMap是无序的,就是和你set的顺序无关的,所以程序出现了Bug,后来使用LinkedHaspMap替代了HaspMap就解决了。

 

1. HashMap好像不能排序?不能排,能排的话,哈希算法也就没有意义了.就是要把这些值散列开才爽啊。如果要排序, 请用TreeMap

2.HashMap岂止不能排序!就算你把排好序的元素依次放进HashMap、过段时间其次序会随机变乱的。 
3. HashMap不能保证元素顺序、遇到虚拟机不定时的整理内存堆肯定会把其次序打乱、只能保证元素不会丢。

This class makes no guarantees as to the order of the map。

in particular, it does not guarantee that the order will remain constant

over time.(jdk1.4.2/java.Util.HashMap)

 

HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。LinkedHashMap LinkedHashMap也是一个HashMap,但是内部维持了一个双向链表,可以保持顺序TreeMap 不仅可以保持顺序,而且可以用于排序。

 

顺便也放个常用的MAP遍历在这:

 

Map<String,String[]> paraMap = new HaspMap<String,String[]>();

for (Entry<String ,String[]>entry : paraMap.entrySet())

{

String filedID = entry.getKey();

String[] values = entry.getValue();

}

这篇关于关于HaspMap存放顺序的解决问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

【数据结构】线性表:顺序表

文章目录 1. 线性表2. 顺序表2.1 概念及结构2.2 接口实现2.3 顺序表的问题及思考 1. 线性表 线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式

剑指offer(C++)--翻转单词顺序列

题目 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? class S

【C语言】顺序表(下卷)

本文继续讲顺序表上卷未讲完的相关内容。(简短的补充) 在指定位置之前插入数据 test.c SeqList.c  SeqList.h //在指定位置之前插入数据void SLInsert(SL* ps, int pos, SLDataType x); 在指定位置删除数据 test.c  SeqList.c   SeqList.h //在指定位置删除数据

按顺序加载外部资源js css

cmmon.js /*** 公共js文件* 内置参数说明:* locationUrl:硬盘路径(开发模式使用)* ytRootUrl:系统根目录,引入该js文件后可直接使用* initJq:自定义jq文件的目录,如果需要引用不同的jq文件,请修改目录。* initCssUrl:初始化css文件容器,如果需要新增或修改引入的c

添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?

问题:添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?   答:对象的引用。以下代码可以证明: Java代码   import java.util.ArrayList;   import java.util.List;      public class Test5 {       public static void main(String args[])

QT事件处理系统之二:窗口部件的事件拦截,以及事件的传递顺序

1、案例说明 在父窗口中为selfLineEdit窗口安装事件过滤器,这样我们可以在父窗口中首先拦截来自于selfLineEdit本身产生的事件,并且决定该事件最终是否继续传递到selfLineEdit窗口本身。 2、关键代码 selfLineEdit.cpp #include "selfLineEdit.h"#include <QDebug>selfLineEdit::selfLin

查询每名学生的学号、选修课程数目、总成绩、并将查询结果存放到生成的’学生选课统计表‘中

--查询每名学生的学号、选修课程数目、总成绩、并将查询结果存放到生成的’学生选课统计表‘中use teachinggoif exists (select * from sys.objects where name='学生选课统计表')drop table 学生选课统计表select studentno,COUNT(*) as '选修课程数目',sum(final) as '总成绩' i

Java中父类和子类的代码执行顺序

Java中(静态)代码块、(静态)变量的执行顺序 父类代码 public class Parent {static {System.out.println("Parent static block");}{System.out.println("Parent non static block");}final static Value i = new Value("Parent static

理解Linux环境变量及配置文件执行顺序 博客分类: Linux 每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。

理解Linux环境变量及配置文件执行顺序 博客分类:  Linux   每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。 设置环境变量:$export NAME="HELLOWORLD"  (临时变量,重启系统将失效) 显示环境变量:$echo $NAME env 命令查看当前用户的环境变量

将request中的所有参数存放到自定义的map中

/*** <获取参数map>* * @return 参数map* @throws Exception */protected Map<String, Object> getParameterMap(HttpServletRequest request) throws Exception {Map<String, Object> resultMap = new HashMap<String,