栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【c++的hash表和 java的hash表】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【c++的hash表和 java的hash表】

c++的hash表和 java的hash表 一、C++的提供 set 和 map 两种哈希容器,有三种数据结构 set
集合底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率
std::set红黑树有序否否O(log n)O(log n)
std::multiset红黑树有序是否O(log n)O(log n)
std::unordered_set哈希表无序否否O(1)O(1)
map
集合底层实现是否有序key是否可以重复能否更改key查询效率增删效率
std::map红黑树key有序否否O(log n)O(log n)
std::multimap红黑树key有序是否O(log n)O(log n)
std::unordered_map哈希表key无序否否O(1)O(1)
二、java中的 Set 和 Map 两种哈希容器 Set
实现方式底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率
TreeSet红黑树有序否否O(log n)O(log n)
HashSet哈希表无序否否O(1)O(1)
Map
实现方式底层实现是否有序key是否可以重复能否更改key查询效率增删效率
TreeMap红黑树key有序否否O(log n)O(log n)
HashMap数组+链表+红黑树key无序否否O(1)O(1)
IdentityHashMap哈希表key无序是否O(1)O(1)
三、Java代码 HashSet

无序不可重复

    public void  testHashSet(){
        HashSet set = new HashSet<>();
        set.add(10);
        set.add(20);
        set.add(6);
        set.add(7);
        System.out.println(set);
        //输出: [20, 6, 7, 10]
    }
TreeSet

有序不可重复

    public void  testTreeSet(){
        TreeSet set = new TreeSet<>();
        set.add(10);
        set.add(20);
        set.add(6);
        set.add(new Integer(6));
        set.add(7);
        System.out.println(set);
        //输出:[6, 7, 10, 20] ,原因:HashSet是用哈希表(散列表结构)实现的,排序按照hashcode的大小
    }
HashMap

key无序不可重复

      Map map1 = new HashMap<>();
        map1.put("aa",100);
        map1.put("aaa",200);
        map1.put("bb",60);
        map1.put("ba",60);
        map1.put("bc",600);
        map1.put("cc",60);
        System.out.println(map1);
        //{aa=100, aaa=200, bb=60, cc=60, bc=600, ba=60} ,结果:无序
HashMap

key有序不可重复

       public void  TestTreeMap(){
        Map map1 = new TreeMap<>();
        map1.put("aa",1);
        map1.put("aaa",2);
        map1.put("bb",3);
        map1.put("ba",4);
        map1.put("bc",5);
        map1.put("cc",6);
        //按照key的字典序排
        System.out.println(map1);
       //输出结果:{aa=1, aaa=2, ba=4, bb=3, bc=5, cc=6}
       }
IdentityHashMap

key无序可重复

        Map map3 = new IdentityHashMap<>();
        map3.put(1,"aa");
        map3.put(2,"aaa");
        map3.put(3,"bb");
        map3.put(4,"ba");
        map3.put(5,"bc");
        map3.put(new Integer(2),"cc");
        System.out.println(map3);
        //输出结果:{3=bb, 4=ba, 2=cc, 2=aaa, 1=aa, 5=bc}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025934.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号