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

Java扩展之part22 Map系列集合

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

Java扩展之part22 Map系列集合

Map

Map集合是一种双列集合,每个键值对包含两个元素,所以又称为键值对集合

特点:

由键决定的无序,不重复,无索引的,值不做要求后面重复的键对应的值会覆盖前面重复键的值键值对都可以为null

Map集合实现类特点:

HashMap:无序,不重复,无索引,值不做要求linkedHashMap:元素按照键是,有序,不重复,无索引,值不做要求TreeMap:排序,不重复,无索引 Map集合ApI

API功能
Map maps=new HashMap<>();集合的创建
maps.put(“iphonex”,10)添加元素,无序,不重复,无索引
maps.clear()清空集合
maps.isEmpty()判断是否为空
Integer key=maps.get(“iphonex”)根据键获取对应的值
maps.remove(“iphonex”)根据键删除整个值
maps.containskey(“哇哇哇”)判断是否包含某个键
maps.containsValue(10)判断是否包含某个值
Set sets=maps.keyset()获取全部键的集合
Collection values=maps.values();获取所有值的集合
maps.size()集合的大小
map1.putAll(map2)把集合map2的元素拷贝到map1中去
Map集合的遍历

    键找值:先拿到集合的全部键

    Set keys=maps.keySet();
    for(String key:keys){//遍历set集合,提取键/值
        int value=maps.get(key);
        System.out.printfln(value);
    }
    
    

    键值对

    把Map集合转换成Set集合

    先把Map集合转换成Set集合,Set集合中每个元素都是键值对实体类型了,遍历set集合,提取键以及提取值。

    maps={yang=1000,手表=10,娃娃=30}
    

    使用foreach遍历map集合,发现Map集合的键值对元素直接是没有类型的,所以不可以直接使用foreach遍历集合。可以通过调用Map的方法entryset把Map集合转换成Set集合形式

    Set> entries=maps.entrySet();
    

    Map.Entry迭代器会生成EntryIterator,返回的实例是一个包含key/value键值对的对象。Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry。他表示Map中的一个实体(含有一个key,一个value键值对),接口中有getKey(),getValue()方法。

    开始遍历

    for(Map.Entry entry:entries ){
        String key =entry.getKey();
        int value=entry.getValue();
        System.out.println(key+" "+value);
    }
    

    Lambda表达式

    maps.forEach((k,v)->{System.out.println(k+"---->"+v);});
    

    其扩展形式为

    maps.forEach(new BiConsumer(){
        @Override
        public void accept(String key,Integer value){
            System.out.println(key+"-->"+value);
        }
    })
    
HashMap的特点和底层原理

由键决定:无序,不重复,无索引。HashMap底层是哈希表结构的依赖hashCode方法和equals方法保证键的唯一底层原理:

Hashmap跟HashSet底层原理是一模一样的,都是哈希表结构,只是HashMap的每个元素包含两个值而已,实际上,Set系列集合的底层就是Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。可以依赖hashCode方法和equals方法保证键的唯一,若键要存储的是自定义对象需要重写hashCode和equals方法。 linkedHashMap集合

由键决定:有序,不重复,无索引

底层原理:

依然是哈希表,只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序 TreeMap集合

特点:不重复,无索引,可排序可排序:按照键数据大小默认升序排序。只能对键排序。TreeMap集合是一定要排序的,可以默认排序,也可以将键按照指定的规则进行排序。TreeMap跟TreeSet一样底层原理是一样的

使用TreeMap集合自定义排序规则:

类实现Comparable接口,重写比较规则

集合自定义Comparator比较器对象,重写比较规则

Map maps2=new TreeMap<>(new Comparator(){
    @Override
    public int compare(Apple o1,Apple o2){
        return Double.compare(o2.getPrice(),o1.getPrice());
    }
})
不可变集合

为什么要创建不可变集合?

如何创建不可变集合?

在list,set,map接口中,都存在of方法,可以创建一个不可变集合

Static list of(E...elements);//创建一个具有指定元素的list集合对象
Static Set of(E...elements);//创建一个具有指定元素的Set集合对象
Static Map of(E...elements);//创建一个具有指定元素的Map集合对象

不可变集合的特点:

定义完成后不可以修改,或者添加或者删除

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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