美文网首页
在Java中如何往Map(HashMap & IdentityH

在Java中如何往Map(HashMap & IdentityH

作者: wyn_做自己 | 来源:发表于2021-11-23 00:53 被阅读0次

今日份鸡汤:努力吧,遇见更好的自己~

问题描述:

今天的一个工作场景,要调用公司其他部门同事提供的接口,他们的接口只支持GET请求方式,然后吧,请求参数中有数组类型,尝试用postman调用了一下他们的接口,发现只有下面截图的方式才可以调通。而我的程序中调用接口使用的是RestTemplate,参数是Map类型的,到此不难发现,要实现这个接口的正常调用,其实就是解决Map中怎么放相同的key元素的问题了。


image.png

问题解决:
那么如何解决Map中怎么放相同的key元素的问题呢?多说无益,来个小demo,一目了然:

程序代码:

public class MapDemo {
    public static void main(String[] args) {
        /**
         * hashMap中插入相同内容的key,value会被覆盖
         */
        Map<String, String> hashMap = new HashMap<>();
        hashMap.put("hTest", "hValue1");
        hashMap.put("hTest", "hValue2");
        hashMap.put(new String("hTest"), "hValue3");
        System.out.println(hashMap);

        /**
         * IdentityHashMap中key的内容地址完全相同时,value才会被覆盖
         */
        Map<String, String> iHashMap = new IdentityHashMap<>();
        iHashMap.put("iTest", "iValue1");
        iHashMap.put("iTest", "iValue2");
        iHashMap.put(new String("iTest"), "iValue3");
        System.out.println(iHashMap);
    }
}

运行结果:


image.png

接下来再简单说一下两者的区别吧:
(1)IdentityHashMap使用的是==比较key的值,而HashMap使用的是equals()。
(2)HashMap使用的是hashCode()查找位置,IdentityHashMap使用的是System.identityHashCode(object)。
(3)IdentityHashMap理论上来说速度要比HashMap快一点。
(4)IdentityHashMap中key能重复,但需要注意一点的是key比较的方法是==,所以若要存放两个相同的key,就需要存放不同的地址。

相关文章

网友评论

      本文标题:在Java中如何往Map(HashMap & IdentityH

      本文链接:https://www.haomeiwen.com/subject/nmbitrtx.html