HashMap和JSONObject的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap和JSONObject的问题相关的知识,希望对你有一定的参考价值。

先调用HashMap的put方法,添加一系列key和value,然后调用HashMap的toString方法,得出的输出结果的顺序和添加顺序不一样。
请问这个是怎么排序的,还有怎么确定这个排序的,如何按照指定顺序输出结果。

因为后面用将HashMap转成JSONObject,然后再将JSONObject传给web前台使用,我发现JSONObject的key:value顺序和HashMap的是一样的,所以如何解决前面的问题呢?

HASHMAP是一个散列结构,复杂度是O(1)(散列得好的Map),它是根据Key的HashCode(哈希码,Object类就有这个HashCode的方法,你也可以根据你要散列的对象重写它),生成对应的地址。这个HashCode如果没有冲突(就是多个Key生成相同的HashCode),那么在Map中,当找这个Key时,对应的Value就是唯一的(否则不唯一)。所以它的排序是跟据你的Key的HashCode排的,当然跟输入顺序不一样追问

可是我要插入的东西有的是String、int有的是数组,这样的话,有办法确定HashMap的排序么?

追答

可以是可以,只要你对它们的HashCode()方法重写一次,按你想排的写返回值就行了.
比如你写的算法是想要“13”排第一的,那你就写return 13.equals(s)?1:......这个安排比较复杂,而且没有意义。你要排序就要对应的Map就行了(查查JDK文档)。
还有,使用数组返回的hashCode我不知怎么定义,你最好写一个结构类,再放入一个数组,然后重写hashCode();

参考技术A
加上trycatch(Exception)捕捉一下

以上是关于HashMap和JSONObject的问题的主要内容,如果未能解决你的问题,请参考以下文章

JSONObject JSONArray json字符串 HashMap ArryList 在java开发中用到的数据结构

HashMap和JSONObject的问题

如何将java中的map转换成jsonobject

目标 C 的 JSONObject Java 等效项

从JSON字符串创建Hashmap

Java HashMap 与 JSONObject